//                               SynCTI Driver Software License Agreement
//1. Synway Information Engineering Co., Ltd (hereinafter referred to as 'Synway') owns the copyright of 'this software and its accessories, relative files and archives' (hereinafter referred to as 'this product'). No organization, enterprise, agency or individual may use this product without our authorization.
//2. We authorize those who achieve the following two requirements to use this product for free:
//A. Using this product with hardware products purchased from Synway through a legitimate marketing channel;
//B. Promising not to transmit the whole or part of this product to any third party without prior permission from Synway.  
//3. Any organization, enterprise, agency or individual, except as otherwise subject to the second article of this license agreement, must obtain the written permission from Synway before using this product.
//4. The authorized organizations, enterprises or individuals have no right to transfer the authorization.
//5. The use of this product indicates that you have fully understood and accepted all terms in this license.

#ifndef WIN32
#ifndef OS_LINUX
#ifndef __BORLANDC__
#ifndef TYPEDEF_H
#define TYPEDEF_H

typedef char				CHAR;
typedef char				WCHAR;
typedef float				FLOAT;
typedef int					BOOL;
typedef int					INT;
typedef int            		LONG;
typedef void				VOID;
typedef void				*PVOID;
typedef int					*PINT;

typedef unsigned char		BYTE;
typedef unsigned char		UCHAR;
typedef unsigned int		UINT;
typedef unsigned int		DWORD;
typedef unsigned int		ULONG;
typedef unsigned short		USHORT;
typedef unsigned short		WORD;

typedef BOOL				*LPBOOL;
typedef BYTE				*LPBYTE;
typedef BYTE				*PBYTE;
typedef CHAR				*LPSTR;
typedef CHAR				*LPTSTR;
typedef CHAR				*PCHAR;
typedef DWORD				*LPDWORD;
typedef DWORD				*PDWORD;
typedef WORD				*LPWORD;
typedef WORD				*PWORD;
typedef UCHAR				*PUCHAR;
typedef LONG				*LPLONG;
typedef LONG				*PLONG;
typedef long long			LONGLONG;
typedef unsigned long long	ULONGLONG;
typedef void				*LPVOID;

typedef const CHAR			*LPCSTR;
typedef const WCHAR			*LPCWSTR;
typedef const void			*LPCVOID;

#endif // end of #ifndef TYPEDEF_H
#endif // end of #ifndef __BORLANDC__
#endif // end of #ifndef OS_LINUX
#ifdef OS_LINUX
typedef char				WCHAR;
typedef const WCHAR			*LPCWSTR;
#endif
#ifndef WINAPI
#define WINAPI
#endif
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif

#endif // end of #ifndef WIN32

#ifndef SHCTI_CONST
	#define SHCTI_CONST

//-----------------------------------------------------------------------
// definition of control attributes flag, which can be retrieved by  
// invoking function "SsmGetFlag()" and set by invoking "SsmSetFlag()"
//-----------------------------------------------------------------------

enum
{
    F_RCVDTMFSENS = 1,					// minimum DTMF signal durations 
    F_TXDTMFAMP = 2,					// amplification of the DTMF signal generated by the DTMF generator
    F_RCVPHONUMHOLDUP = 3,				// called number hold-up
    F_RELATIVEENGYHOOKDETECT = 4,		// sets the working status of the "Enhanced remote pickup detector" on the analog trunk channel
    F_RXR2FILTERTIME = 5,				// minimum sustaining time for MFC R2 signal
    
		F_RECTOFILEA_CALLBACKTIME = 6,		// time interval of callback
    F_CALLERIDSTYLE = 7,				// operating mode of the Caller ID detector
    F_InVoiceToBus = 8,					// determines whether to connect incoming signals to the TDM bus 
    F_ClearInVoiceOnRcvDtmf = 9,		// DTMF clamping
    F_MixerResToBus = 10,				// output signal of "off-bus signal mixer" whether or not to be the input signal source of "on-bus signal mixer"
    F_HighAndLowFreqEnScale = 11,		// proportion of the high-frequency energy to the low-frequency energy in the DTMF signal
    F_DualAndAllFreqEnScale = 12,		// threshold percentage of the in-band energy in the overall frequency energy in the DTMF signal
    F_EchoCancelInFsk = 13,				// whether or not to enable/disable the echo-canceller when the FSK receiver is working
    F_ChToRingingOnRingCnt = 14,		// parameters for the ringing current detector
    F_ISDNNet_WaitRemotePickup = 15,
    F_SetAdjustCtl = 16,
    F_ClearInVoiceOnRcv450Hz = 17,		// whether to put tones onto bus
    F_FSKMinGate = 18,					// energy threshold value for FSK receiving
    F_RECTOFILEA_CALLBACKTIMEA = 19,	// callback time for the function SsmRecToFileA or SsmRecToFileB
    F_CALLERIDTYPE = 20,				// the mode for the remote PBX to send the calling party number on the analog phone line
    F_InVoiceToBusA = 21,				// determines whether to put incoming signals to the TDM bus
    F_EchoCancelInFskA = 22,			// whether to disable the echo canceller when the FSK transceiver is working
    F_ChToRingingOnRingCntA = 23,		// parameters for the ringing current detector
    F_SetAdjustCtlA = 24,
    F_RCVPHONUMHOLDUPA = 25,			// called number hold-up
    F_RELATIVEENGYHOOKDETECTA = 26,		// sets the working status of the "Enhanced remote pickup detector" on the analog trunk channel
	F_CUTDTMFWHILERECORDING = 27,
	F_AlwaysDetectBargein = 28,
	F_NoiseFilteringMinGate = 29, 
	F_SipSetSendDTMFType = 30,
	F_FastPlayTime = 31                 //The time for fast forward/backward added by xjw for OS-5968 2015.1.22
};

enum
{
	F_SETVOICEDTMFFILTERFLAG,
};

//-----------------------------------------------------------------------
// definition of blocking reason, which can be retrieved by invoking
// function "SsmGetBlockReason()"
//-----------------------------------------------------------------------
enum
{
    BLOCKBY_NULL,
    BLOCKBY_TupRcvMGB,
    BLOCKBY_TupRcvHGB,
    BLOCKBY_TupRcvSGB,
    BLOCKBY_TupWaitRLGTimeout,
    BLOCKBY_TupBlockByApp,
};

//-----------------------------------------------------------------------
// Definition of status on blocking remote circuit or circuit groups,
// which might be used by following functions
//  1. "SsmChkBlockRemoteXXX()"
//  2. "SsmChkBlockRemoteXXX()"
//-----------------------------------------------------------------------
#define BLOCKREMOTE_Unblocked		0	// no block-signal is issued
#define BLOCKREMOTE_Blocked			1	// is in blocked state now
#define BLOCKREMOTE_WaitBlockAck	2	// waiting for acknowledgement signal after sending block-signal
#define BLOCKREMOTE_WaitUnblockAck	3	// waiting for acknowledgement signal after sending unblock-signal

//-----------------------------------------------------------------------
// Definition of local blocking status on circuit or circuit groups,
// which might be used by following functions
//   "SsmQueryLocalXXXBlockState()"
//-----------------------------------------------------------------------
#define BLOCK_AppBlockCic	0x00000001	// channel is blocked by invoking SsmBlockLocalCh()
#define BLOCK_TupRcvBLO		0x00000002	// channel is blocked by received BLO
#define BLOCK_TupRcvSGB		0x00000004	// channel is blocked by received SGB
#define BLOCK_TupRcvHGB		0x00000008	// channel is blocked by received HGB
#define BLOCK_TupRcvMGB		0x00000010	// channel is blocked by received MGB
#define BLOCK_AppBlockPCM	0x00000020	// channel is blocked by invoking SsmBlockLocalPCM()


//-----------------------------------------------------------------------
// Definition of channel unavailable reason
//-----------------------------------------------------------------------
#define UNAVAILABLE_PcmSyncLos		0x00000001
#define UNAVAILABLE_Mtp3Unusuable	0x00000002

//-----------------------------------------------------------------------
// Definition of DST D-Channel Event
//-----------------------------------------------------------------------
#define    DST_OFFHOOK							0x8
#define    DST_ONHOOK							0xe
#define    DST_LT_ON							0x1001
#define    DST_LT_OFF							0x1002
#define    DST_LT_FLASHING						0x1003
#define    DST_DGT_PRS							0x1006
#define    DST_DGT_RLS							0x1007
#define    DST_MSG_CHG							0x1008
#define    DST_STARTSTOP_ON						0x1009
#define    DST_STARTSTOP_OFF					0x100a
#define    DST_LT_FASTFLASHING					0x100b
#define    DST_DOWNLOAD_STATUS					0x100c
#define    DST_FINISHED_PLAY					0x100d
#define    DST_FUNC_BTN_PRS						0x100e
#define    DST_FUNC_BTN_RLS						0x100f
#define    DST_HOLD_BTN_PRS						0x1010
#define    DST_HOLD_BTN_RLS						0x1011
#define    DST_RELEASE_BTN_PRS					0x1012
#define    DST_RELEASE_BTN_RLS					0x1013
#define    DST_TRANSFER_BTN_PRS					0x1014
#define    DST_ANSWER_BTN_PRS					0x1015
#define    DST_SPEAKER_BTN_PRS					0x1016
#define    DST_REDIAL_BTN_PRS					0x1017
#define    DST_CONF_BTN_PRS						0x1018
#define    DST_RECALL_BTN_PRS					0x1019
#define    DST_FEATURE_BTN_PRS					0x101a
#define    DST_UP_DOWN							0x101b
#define    DST_EXIT_BTN_PRS						0x101c
#define    DST_HELP_BTN_PRS						0x101d
#define    DST_SOFT_BTN_PRS						0x101e
#define    DST_RING_ON							0x101f
#define    DST_RING_OFF							0x1020
#define    DST_LINE_BTN_PRS						0x1021
#define    DST_MENU_BTN_PRS						0x1022
#define    DST_PREVIOUS_BTN_PRS					0x1023
#define    DST_NEXT_BTN_PRS						0x1024
#define    DST_LT_QUICKFLASH					0x1025
#define    DST_AUDIO_ON							0x1026
#define    DST_AUDIO_OFF						0x1027
#define    DST_DISPLAY_CLOCK					0x1028
#define    DST_DISPLAY_TIMER					0x1029
#define    DST_DISPLAY_CLEAR					0x102a
#define    DST_CFWD								0x102b
#define    DST_CFWD_CANCELED					0x102c
#define    DST_AUTO_ANSWER						0x102d
#define    DST_AUTO_ANSWER_CANCELED				0x102e
#define    DST_SET_BUSY							0x102f
#define    DST_SET_BUSY_CANCELED				0x1030
#define    DST_DESTINATION_BUSY					0x1031
#define    DST_REORDER							0x1032
#define    DST_LT_VERY_FASTFLASHING				0x1033
#define    DST_SPEAKER_BTN_RLS					0x1034
#define    DST_REDIAL_BTN_RLS					0x1035
#define    DST_TRANSFER_BTN_RLS					0x1036
#define    DST_CONF_BTN_RLS						0x1037
#define    DST_DISCONNECTED						0x1038
#define    DST_CONNECTED						0x1039
#define    DST_ABANDONED						0x103a
#define    DST_SUSPENDED						0x103b
#define    DST_RESUMED							0x103c
#define    DST_HELD								0x103d
#define    DST_RETRIEVED						0x103e
#define    DST_REJECTED							0x103f
#define    DST_MSG_BTN_PRS						0x1040
#define    DST_MSG_BTN_RLS						0x1041
#define    DST_SUPERVISOR_BTN_PRS				0x1042
#define    DST_SUPERVISOR_BTN_RLS				0x1043
#define    DST_WRAPUP_BTN_PRS					0x1044
#define    DST_WRAPUP_BTN_RLS					0x1045
#define    DST_READY_BTN_PRS					0x1046
#define    DST_READY_BTN_RLS					0x1047
#define    DST_LOGON_BTN_PRS					0x1048
#define    DST_BREAK_BTN_PRS					0x1049
#define    DST_AUDIO_CHG						0x104a
#define    DST_DISPLAY_MSG						0x104b
#define    DST_WORK_BTN_PRS						0x104c
#define    DST_TALLY_BTN_PRS					0x104d
#define    DST_PROGRAM_BTN_PRS					0x104e
#define    DST_MUTE_BTN_PRS						0x104f
#define    DST_ALERTING_AUTO_ANSWER				0x1050
#define    DST_MENU_BTN_RLS						0x1051
#define    DST_EXIT_BTN_RLS						0x1052
#define    DST_NEXT_BTN_RLS						0x1053
#define    DST_PREVIOUS_BTN_RLS					0x1054
#define    DST_SHIFT_BTN_PRS					0x1055
#define    DST_SHIFT_BTN_RLS					0x1056
#define    DST_PAGE_BTN_PRS						0x1057
#define    DST_PAGE_BTN_RLS						0x1058
#define    DST_SOFT_BTN_RLS						0x1059
#define    DST_LINE_LT_OFF						0x1060
#define    DST_LINE_LT_ON						0x1061
#define    DST_LINE_LT_FLASHING					0x1062
#define    DST_LINE_LT_FASTFLASHING				0x1063
#define    DST_LINE_LT_VERY_FASTFLASHING		0x1064
#define    DST_LINE_LT_QUICKFLASH				0x1065
#define    DST_LINE_LT_WINK						0x1066
#define    DST_LINE_LT_SLOW_WINK				0x1067
#define    DST_FEATURE_LT_OFF					0x1068
#define    DST_FEATURE_LT_ON					0x1069
#define    DST_FEATURE_LT_FLASHING				0x106A
#define    DST_FEATURE_LT_FASTFLASHING			0x106B
#define    DST_FEATURE_LT_VERY_FASTFLASHING		0x106C
#define    DST_FEATURE_LT_QUICKFLASH			0x106D
#define    DST_FEATURE_LT_WINK					0x106E
#define    DST_FEATURE_LT_SLOW_WINK				0x106F
#define    DST_SPEAKER_LT_OFF					0x1070
#define    DST_SPEAKER_LT_ON					0x1071
#define    DST_SPEAKER_LT_FLASHING				0x1072
#define    DST_SPEAKER_LT_FASTFLASHING			0x1073
#define    DST_SPEAKER_LT_VERY_FASTFLASHING		0x1074
#define    DST_SPEAKER_LT_QUICKFLASH			0x1075
#define    DST_SPEAKER_LT_WINK					0x1076
#define    DST_SPEAKER_LT_SLOW_WINK				0x1077
#define    DST_MIC_LT_OFF						0x1078
#define    DST_MIC_LT_ON						0x1079
#define    DST_MIC_LT_FLASHING					0x107A
#define    DST_MIC_LT_FASTFLASHING				0x107B
#define    DST_MIC_LT_VERY_FASTFLASHING			0x107C
#define    DST_MIC_LT_QUICKFLASH				0x107D
#define    DST_MIC_LT_WINK						0x107E
#define    DST_MIC_LT_SLOW_WINK					0x107F
#define    DST_HOLD_LT_OFF						0x1080
#define    DST_HOLD_LT_ON						0x1081
#define    DST_HOLD_LT_FLASHING					0x1082
#define    DST_HOLD_LT_FASTFLASHING				0x1083
#define    DST_HOLD_LT_VERY_FASTFLASHING		0x1084
#define    DST_HOLD_LT_QUICKFLASH				0x1085
#define    DST_HOLD_LT_WINK						0x1086
#define    DST_HOLD_LT_SLOW_WINK				0x1087
#define    DST_RELEASE_LT_OFF					0x1088
#define    DST_RELEASE_LT_ON					0x1089
#define    DST_RELEASE_LT_FLASHING				0x108A
#define    DST_RELEASE_LT_FASTFLASHING			0x108B
#define    DST_RELEASE_LT_VERY_FASTFLASHING		0x108C
#define    DST_RELEASE_LT_QUICKFLASH			0x108D
#define    DST_RELEASE_LT_WINK					0x108E
#define    DST_RELEASE_LT_SLOW_WINK				0x108F
#define    DST_HELP_LT_OFF						0x1090
#define    DST_HELP_LT_ON						0x1091
#define    DST_HELP_LT_FLASHING					0x1092
#define    DST_HELP_LT_FASTFLASHING				0x1093
#define    DST_HELP_LT_VERY_FASTFLASHING		0x1094
#define    DST_HELP_LT_QUICKFLASH				0x1095
#define    DST_HELP_LT_WINK						0x1096
#define    DST_HELP_LT_SLOW_WINK				0x1097
#define    DST_SUPERVISOR_LT_OFF				0x1098
#define    DST_SUPERVISOR_LT_ON					0x1099
#define    DST_SUPERVISOR_LT_FLASHING			0x109A
#define    DST_SUPERVISOR_LT_FASTFLASHING		0x109B
#define    DST_SUPERVISOR_LT_VERY_FASTFLASHING	0x109C
#define    DST_SUPERVISOR_LT_QUICKFLASH			0x109D
#define    DST_SUPERVISOR_LT_WINK				0x109E
#define    DST_SUPERVISOR_LT_SLOW_WINK			0x109F
#define    DST_READY_LT_OFF						0x10A0
#define    DST_READY_LT_ON						0x10A1
#define    DST_READY_LT_FLASHING				0x10A2
#define    DST_READY_LT_FASTFLASHING			0x10A3
#define    DST_READY_LT_VERY_FASTFLASHING		0x10A4
#define    DST_READY_LT_QUICKFLASH				0x10A5
#define    DST_READY_LT_WINK					0x10A6
#define    DST_READY_LT_SLOW_WINK				0x10A7
#define    DST_LOGON_LT_OFF						0x10A8
#define    DST_LOGON_LT_ON						0x10A9
#define    DST_LOGON_LT_FLASHING				0x10AA
#define    DST_LOGON_LT_FASTFLASHING			0x10AB
#define    DST_LOGON_LT_VERY_FASTFLASHING		0x10AC
#define    DST_LOGON_LT_QUICKFLASH				0x10AD
#define    DST_LOGON_LT_WINK					0x10AE
#define    DST_LOGON_LT_SLOW_WINK				0x10AF
#define    DST_WRAPUP_LT_OFF					0x10B0
#define    DST_WRAPUP_LT_ON						0x10B1
#define    DST_WRAPUP_LT_FLASHING				0x10B2
#define    DST_WRAPUP_LT_FASTFLASHING			0x10B3
#define    DST_WRAPUP_LT_VERY_FASTFLASHING		0x10B4
#define    DST_WRAPUP_LT_QUICKFLASH				0x10B5
#define    DST_WRAPUP_LT_WINK					0x10B6
#define    DST_WRAPUP_LT_SLOW_WINK				0x10B7
#define    DST_RING_LT_OFF						0x10B8
#define    DST_RING_LT_ON						0x10B9
#define    DST_RING_LT_FLASHING					0x10BA
#define    DST_RING_LT_FASTFLASHING				0x10BB
#define    DST_RING_LT_VERY_FASTFLASHING		0x10BC
#define    DST_RING_LT_QUICKFLASH				0x10BD
#define    DST_RING_LT_WINK						0x10BE
#define    DST_RING_LT_SLOW_WINK				0x10BF
#define    DST_ANSWER_LT_OFF					0x10C0
#define    DST_ANSWER_LT_ON						0x10C1
#define    DST_ANSWER_LT_FLASHING				0x10C2
#define    DST_ANSWER_LT_FASTFLASHING			0x10C3
#define    DST_ANSWER_LT_VERY_FASTFLASHING		0x10C4
#define    DST_ANSWER_LT_QUICKFLASH				0x10C5
#define    DST_ANSWER_LT_WINK					0x10C6
#define    DST_ANSWER_LT_SLOW_WINK				0x10C7
#define    DST_PROGRAM_LT_OFF					0x10C8
#define    DST_PROGRAM_LT_ON					0x10C9
#define    DST_PROGRAM_LT_FLASHING				0x10CA
#define    DST_PROGRAM_LT_FASTFLASHING			0x10CB
#define    DST_PROGRAM_LT_VERY_FASTFLASHING		0x10CC
#define    DST_PROGRAM_LT_QUICKFLASH			0x10CD
#define    DST_PROGRAM_LT_WINK					0x10CE
#define    DST_PROGRAM_LT_MEDIUM_WINK			0x10CF
#define    DST_MSG_LT_OFF						0x10D0
#define    DST_MSG_LT_ON						0x10D1
#define    DST_MSG_LT_FLASHING					0x10D2
#define    DST_MSG_LT_FASTFLASHING				0x10D3
#define    DST_MSG_LT_VERY_FASTFLASHING			0x10D4
#define    DST_MSG_LT_QUICKFLASH				0x10D5
#define    DST_MSG_LT_WINK						0x10D6
#define    DST_MSG_LT_SLOW_WINK					0x10D7
#define    DST_TRANSFER_LT_OFF					0x10D8
#define    DST_TRANSFER_LT_ON					0x10D9
#define    DST_TRANSFER_LT_FLASHING				0x10DA
#define    DST_TRANSFER_LT_FASTFLASHING			0x10DB
#define    DST_TRANSFER_LT_VERY_FASTFLASHING	0x10DC
#define    DST_TRANSFER_LT_QUICKFLASH			0x10DD
#define    DST_TRANSFER_LT_WINK					0x10DE
#define    DST_TRANSFER_LT_MEDIUM_WINK			0x10DF
#define    DST_CONFERENCE_LT_OFF				0x10E0
#define    DST_CONFERENCE_LT_ON					0x10E1
#define    DST_CONFERENCE_LT_FLASHING			0x10E2
#define    DST_CONFERENCE_LT_FASTFLASHING		0x10E3
#define    DST_CONFERENCE_LT_VERY_FASTFLASHING	0x10E4
#define    DST_CONFERENCE_LT_QUICKFLASH			0x10E5
#define    DST_CONFERENCE_LT_WINK				0x10E6
#define    DST_CONFERENCE_LT_MEDIUM_WINK		0x10E7
#define    DST_SOFT_LT_OFF						0x10E8
#define    DST_SOFT_LT_ON						0x10E9
#define    DST_SOFT_LT_FLASHING					0x10EA
#define    DST_SOFT_LT_FASTFLASHING				0x10EB
#define    DST_SOFT_LT_VERY_FASTFLASHING		0x10EC
#define    DST_SOFT_LT_QUICKFLASH				0x10ED
#define    DST_SOFT_LT_WINK						0x10EE
#define    DST_SOFT_LT_SLOW_WINK				0x10EF
#define    DST_MENU_LT_OFF						0x10F0
#define    DST_MENU_LT_ON						0x10F1
#define    DST_MENU_LT_FLASHING					0x10F2
#define    DST_MENU_LT_FASTFLASHING				0x10F3
#define    DST_MENU_LT_VERY_FASTFLASHING		0x10F4
#define    DST_MENU_LT_QUICKFLASH				0x10F5
#define    DST_MENU_LT_WINK						0x10F6
#define    DST_MENU_LT_SLOW_WINK				0x10F7
#define    DST_CALLWAITING_LT_OFF				0x10F8
#define    DST_CALLWAITING_LT_ON				0x10F9
#define    DST_CALLWAITING_LT_FLASHING			0x10FA
#define    DST_CALLWAITING_LT_FASTFLASHING		0x10FB
#define    DST_CALLWAITING_LT_VERY_FASTFLASHING	0x10FC
#define    DST_CALLWAITING_LT_QUICKFLASH		0x10FD
#define    DST_CALLWAITING_LT_WINK				0x10FE
#define    DST_CALLWAITING_LT_SLOW_WINK			0x10FF
#define    DST_REDIAL_LT_OFF					0x1100
#define    DST_REDIAL_LT_ON						0x1101
#define    DST_REDIAL_LT_FLASHING				0x1102
#define    DST_REDIAL_LT_FASTFLASHING			0x1103
#define    DST_REDIAL_LT_VERY_FASTFLASHING		0x1104
#define    DST_REDIAL_LT_QUICKFLASH				0x1105
#define    DST_REDIAL_LT_WINK					0x1106
#define    DST_REDIAL_LT_SLOW_WINK				0x1107
#define    DST_PAGE_LT_OFF						0x1108
#define    DST_PAGE_LT_ON						0x1109
#define    DST_PAGE_LT_FLASHING					0x110A
#define    DST_PAGE_LT_FASTFLASHING				0x110B
#define    DST_PAGE_LT_VERY_FASTFLASHING		0x110C
#define    DST_PAGE_LT_QUICKFLASH				0x110D
#define    DST_CTRL_BTN_PRS						0x110E
#define    DST_CTRL_BTN_RLS						0x110F
#define    DST_CANCEL_BTN_PRS					0x1110
#define    DST_CANCEL_BTN_RLS					0x1111
#define    DST_MIC_BTN_PRS						0x1112
#define    DST_MIC_BTN_RLS						0x1113
#define    DST_FLASH_BTN_PRS					0x1114
#define    DST_FLASH_BTN_RLS					0x1115
#define    DST_DIRECTORY_BTN_PRS				0x1116
#define    DST_DIRECTORY_BTN_RLS				0x1117
#define    DST_HANDSFREE_BTN_PRS				0x1118
#define    DST_HANDSFREE_BTN_RLS				0x1119
#define    DST_RINGTONE_BTN_PRS					0x111A
#define    DST_RINGTONE_BTN_RLS					0x111B
#define    DST_SAVE_BTN_PRS						0x111C
#define    DST_SAVE_BTN_RLS						0x111D
#define    DST_MUTE_LT_OFF						0x111E
#define    DST_MUTE_LT_ON						0x111F
#define    DST_MUTE_LT_FLASHING					0x1120
#define    DST_MUTE_LT_FASTFLASHING				0x1121
#define    DST_MUTE_LT_VERY_FASTFLASHING		0x1122
#define    DST_MUTE_LT_QUICKFLASH				0x1123
#define    DST_MUTE_LT_WINK						0x1124
#define    DST_MUTE_LT_SLOW_WINK				0x1125
#define    DST_MUTE_LT_MEDIUM_WINK				0x1126
#define    DST_HANDSFREE_LT_OFF					0x1127
#define    DST_HANDSFREE_LT_ON					0x1128
#define    DST_HANDSFREE_LT_FLASHING			0x1129
#define    DST_HANDSFREE_LT_FASTFLASHING		0x112A
#define    DST_HANDSFREE_LT_VERY_FASTFLASHING	0x112B
#define    DST_HANDSFREE_LT_QUICKFLASH			0x112C
#define    DST_HANDSFREE_LT_WINK				0x112D
#define    DST_HANDSFREE_LT_SLOW_WINK			0x112E
#define    DST_HANDSFREE_LT_MEDIUM_WINK			0x112F
#define    DST_DIRECTORY_LT_OFF					0x1130
#define    DST_DIRECTORY_LT_ON					0x1131
#define    DST_DIRECTORY_LT_FLASHING			0x1132
#define    DST_DIRECTORY_LT_FASTFLASHING		0x1133
#define    DST_DIRECTORY_LT_VERY_FASTFLASHING	0x1134
#define    DST_DIRECTORY_LT_QUICKFLASH			0x1135
#define    DST_DIRECTORY_LT_WINK				0x1136
#define    DST_DIRECTORY_LT_SLOW_WINK			0x1137
#define    DST_DIRECTORY_LT_MEDIUM_WINK			0x1138
#define    DST_RINGTONE_LT_OFF					0x1139
#define    DST_RINGTONE_LT_ON					0x113A
#define    DST_RINGTONE_LT_FLASHING				0x113B
#define    DST_RINGTONE_LT_FASTFLASHING			0x113C
#define    DST_RINGTONE_LT_VERY_FASTFLASHING	0x113D
#define    DST_RINGTONE_LT_QUICKFLASH			0x113E
#define    DST_RINGTONE_LT_WINK					0x113F
#define    DST_RINGTONE_LT_SLOW_WINK			0x1140
#define    DST_RINGTONE_LT_MEDIUM_WINK			0x1141
#define    DST_SAVE_LT_OFF						0x1142
#define    DST_SAVE_LT_ON						0x1143
#define    DST_SAVE_LT_FLASHING					0x1144
#define    DST_SAVE_LT_FASTFLASHING				0x1145
#define    DST_SAVE_LT_VERY_FASTFLASHING		0x1146
#define    DST_SAVE_LT_QUICKFLASH				0x1147
#define    DST_SAVE_LT_WINK						0x1148
#define    DST_SAVE_LT_SLOW_WINK				0x1149
#define    DST_SAVE_LT_MEDIUM_WINK				0x114A
#define    DST_FUNC_LT_WINK						0x114B
#define    DST_FUNC_LT_SLOW_WINK				0x114C
#define    DST_FUNC_LT_MEDIUM_WINK				0x114D
#define    DST_CALLWAITING_BTN_PRS				0x114E
#define    DST_CALLWAITING_BTN_RLS				0x114F
#define    DST_PARK_BTN_PRS						0x1150
#define    DST_PARK_BTN_RLS						0x1151
#define    DST_NEWCALL_BTN_PRS					0x1152
#define    DST_NEWCALL_BTN_RLS					0x1153
#define    DST_PARK_LT_OFF						0x1154
#define    DST_PARK_LT_ON						0x1155
#define    DST_PARK_LT_FLASHING					0x1156
#define    DST_PARK_LT_FASTFLASHING				0x1157
#define    DST_PARK_LT_VERY_FASTFLASHING		0x1158
#define    DST_PARK_LT_QUICKFLASH				0x1159
#define    DST_PARK_LT_WINK						0x115A
#define    DST_PARK_LT_SLOW_WINK				0x115B
#define    DST_PARK_LT_MEDIUM_WINK				0x115C
#define    DST_SCROLL_BTN_PRS					0x115D
#define    DST_SCROLL_BTN_RLS					0x115E
#define    DST_DIVERT_BTN_PRS					0x115F
#define    DST_DIVERT_BTN_RLS					0x1160
#define    DST_GROUP_BTN_PRS					0x1161
#define    DST_GROUP_BTN_RLS					0x1162
#define    DST_SPEEDDIAL_BTN_PRS				0x1163
#define    DST_SPEEDDIAL_BTN_RLS				0x1164
#define    DST_DND_BTN_PRS						0x1165
#define    DST_DND_BTN_RLS						0x1166
#define    DST_ENTER_BTN_PRS					0x1167
#define    DST_ENTER_BTN_RLS					0x1168
#define    DST_CLEAR_BTN_PRS					0x1169
#define    DST_CLEAR_BTN_RLS					0x116A
#define    DST_DESTINATION_BTN_PRS				0x116B
#define    DST_DESTINATION_BTN_RLS				0x116C
#define    DST_DND_LT_OFF						0x116D
#define    DST_DND_LT_ON						0x116E
#define    DST_DND_LT_FLASHING					0x116F
#define    DST_DND_LT_FASTFLASHING				0x1170
#define    DST_DND_LT_VERY_FASTFLASHING			0x1171
#define    DST_DND_LT_QUICKFLASH				0x1172
#define    DST_DND_LT_WINK						0x1173
#define    DST_DND_LT_SLOW_WINK					0x1174
#define    DST_DND_LT_MEDIUM_WINK				0x1175
#define    DST_GROUP_LT_OFF						0x1176
#define    DST_GROUP_LT_ON						0x1177
#define    DST_GROUP_LT_FLASHING				0x1178
#define    DST_GROUP_LT_FASTFLASHING			0x1179
#define    DST_GROUP_LT_VERY_FASTFLASHING		0x117A
#define    DST_GROUP_LT_QUICKFLASH				0x117B
#define    DST_GROUP_LT_WINK					0x117C
#define    DST_GROUP_LT_SLOW_WINK				0x117D
#define    DST_GROUP_LT_MEDIUM_WINK				0x117E
#define    DST_DIVERT_LT_OFF					0x117F
#define    DST_DIVERT_LT_ON						0x1180
#define    DST_DIVERT_LT_FLASHING				0x1181
#define    DST_DIVERT_LT_FASTFLASHING			0x1182
#define    DST_DIVERT_LT_VERY_FASTFLASHING		0x1183
#define    DST_DIVERT_LT_QUICKFLASH				0x1184
#define    DST_DIVERT_LT_WINK					0x1185
#define    DST_DIVERT_LT_SLOW_WINK				0x1186
#define    DST_DIVERT_LT_MEDIUM_WINK			0x1187
#define    DST_SCROLL_LT_OFF					0x1188
#define    DST_SCROLL_LT_ON						0x1189
#define    DST_SCROLL_LT_FLASHING				0x118A
#define    DST_SCROLL_LT_FASTFLASHING			0x118B
#define    DST_SCROLL_LT_VERY_FASTFLASHING		0x118C
#define    DST_SCROLL_LT_QUICKFLASH				0x118D
#define    DST_SCROLL_LT_WINK					0x118E
#define    DST_SCROLL_LT_SLOW_WINK				0x118F
#define    DST_SCROLL_LT_MEDIUM_WINK			0x1190
#define    DST_CALLBACK_BTN_PRS					0x1191
#define    DST_CALLBACK_BTN_RLS					0x1192
#define    DST_FLASH_LT_OFF						0x1193
#define    DST_FLASH_LT_ON						0x1194
#define    DST_FLASH_LT_FLASHING				0x1195
#define    DST_FLASH_LT_FASTFLASHING			0x1196
#define    DST_FLASH_LT_VERY_FASTFLASHING		0x1197
#define    DST_FLASH_LT_QUICKFLASH				0x1198
#define    DST_FLASH_LT_WINK					0x1199
#define    DST_FLASH_LT_SLOW_WINK				0x119A
#define    DST_FLASH_LT_MEDIUM_WINK				0x119B
#define    DST_MODE_BTN_PRS						0x119C
#define    DST_MODE_BTN_RLS						0x119D
#define    DST_SPEAKER_LT_MEDIUM_WINK			0x119E
#define    DST_MSG_LT_MEDIUM_WINK				0x119F
#define    DST_SPEEDDIAL_LT_OFF					0x11A0
#define    DST_SPEEDDIAL_LT_ON					0x11A1
#define    DST_SPEEDDIAL_LT_FLASHING			0x11A2
#define    DST_SPEEDDIAL_LT_FASTFLASHING		0x11A3
#define    DST_SPEEDDIAL_LT_VERY_FASTFLASHING	0x11A4
#define    DST_SPEEDDIAL_LT_QUICKFLASH			0x11A5
#define    DST_SPEEDDIAL_LT_WINK				0x11A6
#define    DST_SPEEDDIAL_LT_SLOW_WINK			0x11A7
#define    DST_SPEEDDIAL_LT_MEDIUM_WINK			0x11A8
#define    DST_SELECT_BTN_PRS					0x11A9
#define    DST_SELECT_BTN_RLS					0x11AA
#define    DST_PAUSE_BTN_PRS					0x11AB
#define    DST_PAUSE_BTN_RLS					0x11AC
#define    DST_INTERCOM_BTN_PRS					0x11AD
#define    DST_INTERCOM_BTN_RLS					0x11AE
#define    DST_INTERCOM_LT_OFF					0x11AF
#define    DST_INTERCOM_LT_ON					0x11B0
#define    DST_INTERCOM_LT_FLASHING				0x11B1
#define    DST_INTERCOM_LT_FASTFLASHING			0x11B2
#define    DST_INTERCOM_LT_VERY_FASTFLASHING	0x11B3
#define    DST_INTERCOM_LT_QUICKFLASH			0x11B4
#define    DST_INTERCOM_LT_WINK					0x11B5
#define    DST_INTERCOM_LT_SLOW_WINK			0x11B6
#define    DST_INTERCOM_LT_MEDIUM_WINK			0x11B7
#define    DST_CFWD_LT_OFF						0x11B8
#define    DST_CFWD_LT_ON						0x11B9
#define    DST_CFWD_LT_FLASHING					0x11BA
#define    DST_CFWD_LT_FASTFLASHING				0x11BB
#define    DST_CFWD_LT_VERY_FASTFLASHING		0x11BC
#define    DST_CFWD_LT_QUICKFLASH				0x11BD
#define    DST_CFWD_LT_WINK						0x11BE
#define    DST_CFWD_LT_SLOW_WINK				0x11BF
#define    DST_CFWD_LT_MEDIUM_WINK				0x11C0
#define    DST_CFWD_BTN_PRS						0x11C1
#define    DST_CFWD_BTN_RLS						0x11C2
#define    DST_SPECIAL_LT_OFF					0x11C3
#define    DST_SPECIAL_LT_ON					0x11C4
#define    DST_SPECIAL_LT_FLASHING				0x11C5
#define    DST_SPECIAL_LT_FASTFLASHING			0x11C6
#define    DST_SPECIAL_LT_VERY_FASTFLASHING		0x11C7
#define    DST_SPECIAL_LT_QUICKFLASH			0x11C8
#define    DST_SPECIAL_LT_WINK					0x11C9
#define    DST_SPECIAL_LT_SLOW_WINK				0x11CA
#define    DST_SPECIAL_LT_MEDIUM_WINK			0x11CB
#define    DST_SPECIAL_BTN_PRS					0x11CC
#define    DST_SPECIAL_BTN_RLS					0x11CD
#define    DST_FORWARD_LT_OFF					0x11CE
#define    DST_FORWARD_LT_ON					0x11CF
#define    DST_FORWARD_LT_FLASHING				0x11D0
#define    DST_FORWARD_LT_FASTFLASHING			0x11D1
#define    DST_FORWARD_LT_VERY_FASTFLASHING		0x11D2
#define    DST_FORWARD_LT_QUICKFLASH			0x11D3
#define    DST_FORWARD_LT_WINK					0x11D4
#define    DST_FORWARD_LT_SLOW_WINK				0x11D5
#define    DST_FORWARD_LT_MEDIUM_WINK			0x11D6
#define    DST_FORWARD_BTN_PRS					0x11D7
#define    DST_FORWARD_BTN_RLS					0x11D8
#define    DST_OUTGOING_LT_OFF					0x11D9
#define    DST_OUTGOING_LT_ON					0x11DA
#define    DST_OUTGOING_LT_FLASHING				0x11DB
#define    DST_OUTGOING_LT_FASTFLASHING			0x11DC
#define    DST_OUTGOING_LT_VERY_FASTFLASHING	0x11DD
#define    DST_OUTGOING_LT_QUICKFLASH			0x11DE
#define    DST_OUTGOING_LT_WINK					0x11DF
#define    DST_OUTGOING_LT_SLOW_WINK			0x11E0
#define    DST_OUTGOING_LT_MEDIUM_WINK			0x11E1
#define    DST_OUTGOING_BTN_PRS					0x11E2
#define    DST_OUTGOING_BTN_RLS					0x11E3
#define    DST_BACKSPACE_LT_OFF					0x11E4
#define    DST_BACKSPACE_LT_ON					0x11E5
#define    DST_BACKSPACE_LT_FLASHING			0x11E6
#define    DST_BACKSPACE_LT_FASTFLASHING		0x11E7
#define    DST_BACKSPACE_LT_VERY_FASTFLASHING	0x11E8
#define    DST_BACKSPACE_LT_QUICKFLASH			0x11E9
#define    DST_BACKSPACE_LT_WINK				0x11EA
#define    DST_BACKSPACE_LT_SLOW_WINK			0x11EB
#define    DST_BACKSPACE_LT_MEDIUM_WINK			0x11EC
#define    DST_BACKSPACE_BTN_PRS				0x11ED
#define    DST_BACKSPACE_BTN_RLS				0x11EE
#define    DST_START_TONE						0x11EF
#define    DST_STOP_TONE						0x11F0
#define    DST_FLASHHOOK						0x11F1
#define    DST_LINE_BTN_RLS						0x11F2
#define    DST_FEATURE_BTN_RLS					0x11F3
#define    DST_MUTE_BTN_RLS						0x11F4
#define    DST_HELP_BTN_RLS						0x11F5
#define    DST_LOGON_BTN_RLS					0x11F6
#define    DST_ANSWER_BTN_RLS					0x11F7
#define    DST_PROGRAM_BTN_RLS					0x11F8
#define    DST_CONFERENCE_BTN_RLS				0x11F9
#define    DST_RECALL_BTN_RLS					0x11FA
#define    DST_BREAK_BTN_RLS					0x11FB
#define    DST_WORK_BTN_RLS						0x11FC
#define    DST_TALLY_BTN_RLS					0x11FD
#define    DST_EXPAND_LT_OFF					0x1200
#define    DST_EXPAND_LT_ON						0x1201
#define    DST_EXPAND_LT_FLASHING				0x1202
#define    DST_EXPAND_LT_FASTFLASHING			0x1203
#define    DST_EXPAND_LT_VERY_FASTFLASHING		0x1204
#define    DST_EXPAND_LT_QUICKFLASH				0x1205
#define    DST_EXPAND_LT_WINK					0x1206
#define    DST_EXPAND_LT_SLOW_WINK				0x1207
#define    DST_EXPAND_LT_MEDIUM_WINK			0x1208
#define    DST_EXPAND_BTN_PRS					0x1209
#define    DST_EXPAND_BTN_RLS					0x120A
#define    DST_SERVICES_LT_OFF					0x1210
#define    DST_SERVICES_LT_ON					0x1211
#define    DST_SERVICES_LT_FLASHING				0x1212
#define    DST_SERVICES_LT_FASTFLASHING			0x1213
#define    DST_SERVICES_LT_VERY_FASTFLASHING	0x1214
#define    DST_SERVICES_LT_QUICKFLASH			0x1215
#define    DST_SERVICES_LT_WINK					0x1216
#define    DST_SERVICES_LT_SLOW_WINK			0x1217
#define    DST_SERVICES_LT_MEDIUM_WINK			0x1218
#define    DST_SERVICES_BTN_PRS					0x1219
#define    DST_SERVICES_BTN_RLS					0x121A
#define    DST_HEADSET_LT_OFF					0x1220
#define    DST_HEADSET_LT_ON					0x1221
#define    DST_HEADSET_LT_FLASHING				0x1222
#define    DST_HEADSET_LT_FASTFLASHING			0x1223
#define    DST_HEADSET_LT_VERY_FASTFLASHING		0x1224
#define    DST_HEADSET_LT_QUICKFLASH			0x1225
#define    DST_HEADSET_LT_WINK					0x1226
#define    DST_HEADSET_LT_SLOW_WINK				0x1227
#define    DST_HEADSET_LT_MEDIUM_WINK			0x1228
#define    DST_HEADSET_BTN_PRS					0x1229
#define    DST_HEADSET_BTN_RLS					0x122A
#define    DST_NAVIGATION_BTN_PRS				0x1239
#define    DST_NAVIGATION_BTN_RLS				0x123A
#define    DST_COPY_LT_OFF						0x1240
#define    DST_COPY_LT_ON						0x1241
#define    DST_COPY_LT_FLASHING					0x1242
#define    DST_COPY_LT_FASTFLASHING				0x1243
#define    DST_COPY_LT_VERY_FASTFLASHING		0x1244
#define    DST_COPY_LT_QUICKFLASH				0x1245
#define    DST_COPY_LT_WINK						0x1246
#define    DST_COPY_LT_SLOW_WINK				0x1247
#define    DST_COPY_LT_MEDIUM_WINK				0x1248
#define    DST_COPY_BTN_PRS						0x1249
#define    DST_COPY_BTN_RLS						0x124A
#define    DST_LINE_LT_MEDIUM_WINK				0x1250
#define    DST_MIC_LT_MEDIUM_WINK				0x1251
#define    DST_HOLD_LT_MEDIUM_WINK				0x1252
#define    DST_RELEASE_LT_MEDIUM_WINK			0x1253
#define    DST_HELP_LT_MEDIUM_WINK				0x1254
#define    DST_SUPERVISOR_LT_MEDIUM_WINK		0x1255
#define    DST_READY_LT_MEDIUM_WINK				0x1256
#define    DST_LOGON_LT_MEDIUM_WINK				0x1257
#define    DST_WRAPUP_LT_MEDIUM_WINK			0x1258
#define    DST_RING_LT_MEDIUM_WINK				0x1259
#define    DST_ANSWER_LT_MEDIUM_WINK			0x125A
#define    DST_PROGRAM_LT_SLOW_WINK				0x125B
#define    DST_TRANSFER_LT_SLOW_WINK			0x125C
#define    DST_CONFERENCE_LT_SLOW_WINK			0x125D
#define    DST_SOFT_LT_MEDIUM_WINK				0x125E
#define    DST_MENU_LT_MEDIUM_WINK				0x125F
#define    DST_CALLWAITING_LT_MEDIUM_WINK		0x1260
#define    DST_REDIAL_LT_MEDIUM_WINK			0x1261
#define    DST_PAGE_LT_MEDIUM_WINK				0x1262
#define    DST_FEATURE_LT_MEDIUM_WINK			0x1263
#define    DST_PAGE_LT_WINK						0x1264
#define    DST_PAGE_LT_SLOW_WINK				0x1265
#define    DST_CALLBACK_LT_ON					0x1267
#define    DST_CALLBACK_LT_FLASHING				0x1268
#define    DST_CALLBACK_LT_WINK					0x1269
#define    DST_CALLBACK_LT_FASTFLASHING			0x126a
#define    DST_ICM_LT_OFF						0x126b
#define    DST_ICM_LT_ON						0x126c
#define    DST_ICM_LT_FLASHING					0x126d
#define    DST_ICM_LT_WINK						0x126e
#define    DST_ICM_LT_FASTFLASHING				0x126f
#define    DST_ICM_BTN_PRS						0x1270
#define    DST_ICM_BTN_RLS						0x1271
#define    DST_CISCO_SCCP_CALL_INFO				0x1280
#define    DST_CALLBACK_LT_OFF					0x1266
#define    DST_CONFERENCE_BTN_PRS				DST_CONF_BTN_PRS
#define    DST_FUNC_LT_FASTFLASHING				DST_LT_FASTFLASHING
#define    DST_FUNC_LT_FLASHING					DST_LT_FLASHING
#define    DST_FUNC_LT_OFF						DST_LT_OFF
#define    DST_FUNC_LT_ON						DST_LT_ON
#define    DST_FUNC_LT_QUICKFLASH				DST_LT_QUICKFLASH
#define    DST_FUNC_LT_VERY_FASTFLASHING		DST_LT_VERY_FASTFLASHING
#define	   DST_DC_BTN_PRS						0x1301
#define    DST_LND_BTN_PRS						0x1302
#define    DST_CHK_BTN_PRS						0x1303
#define    DST_CALLSTATE_IDLE					0x1304
#define    DST_CALLSTATE_DIALING				0x1306
#define    DST_CALLSTATE_ALERTING				0x1307
#define    DST_CALLSTATE_FAR_END_RINGBACK		0x1308
#define    DST_CALLSTATE_TALK					0X1309
#define    DST_SPEEDDIAL_NUMBER					0x130a
#define    DST_CALLSTATE_DIAL_COMPLETED			0x130b
#define    DST_CALLSTATE_BUSY_TONE				0x130c
#define    DST_CALLSTATE_INUSE					0x130d

#define	   DST_CALL_IN_PROGRESS					0x6b
#define    DST_CALL_ALERTING					0x6e
#define    DST_CALL_CONNECTED					0x6f
#define    DST_CALL_RELEASED					0x70
#define    DST_CALL_SUSPENDED					0x71
#define    DST_CALL_RESUMED						0x72
#define    DST_CALL_HELD						0x73
#define    DST_CALL_RETRIEVED					0x74
#define    DST_CALL_ABANDONED					0x75
#define    DST_CALL_REJECTED					0x76

//-----------------------------------------------------------------------
//Definition of D-Channel Event
//-----------------------------------------------------------------------
#define    DE_OFFHOOK							DST_OFFHOOK
#define    DE_ONHOOK							DST_ONHOOK
#define    DE_LT_ON								DST_LT_ON
#define    DE_LT_OFF							DST_LT_OFF
#define    DE_LT_FLASHING						DST_LT_FLASHING
#define    DE_DGT_PRS							DST_DGT_PRS
#define    DE_DGT_RLS							DST_DGT_RLS
#define    DE_MSG_CHG							DST_MSG_CHG
#define    DE_STARTSTOP_ON						DST_STARTSTOP_ON
#define    DE_STARTSTOP_OFF						DST_STARTSTOP_OFF
#define    DE_LT_FASTFLASHING					DST_LT_FASTFLASHING
#define    DE_DOWNLOAD_STATUS					DST_DOWNLOAD_STATUS
#define    DE_FINISHED_PLAY						DST_FINISHED_PLAY
#define    DE_FUNC_BTN_PRS						DST_FUNC_BTN_PRS
#define    DE_FUNC_BTN_RLS						DST_FUNC_BTN_RLS
#define    DE_HOLD_BTN_PRS						DST_HOLD_BTN_PRS
#define    DE_HOLD_BTN_RLS						DST_HOLD_BTN_RLS
#define    DE_RELEASE_BTN_PRS					DST_RELEASE_BTN_PRS
#define    DE_RELEASE_BTN_RLS					DST_RELEASE_BTN_RLS
#define    DE_TRANSFER_BTN_PRS					DST_TRANSFER_BTN_PRS
#define    DE_ANSWER_BTN_PRS					DST_ANSWER_BTN_PRS
#define    DE_SPEAKER_BTN_PRS					DST_SPEAKER_BTN_PRS
#define    DE_REDIAL_BTN_PRS					DST_REDIAL_BTN_PRS
#define    DE_CONF_BTN_PRS						DST_CONF_BTN_PRS
#define    DE_RECALL_BTN_PRS					DST_RECALL_BTN_PRS
#define    DE_FEATURE_BTN_PRS					DST_FEATURE_BTN_PRS
#define    DE_UP_DOWN							DST_UP_DOWN
#define    DE_EXIT_BTN_PRS						DST_EXIT_BTN_PRS
#define    DE_HELP_BTN_PRS						DST_HELP_BTN_PRS
#define    DE_SOFT_BTN_PRS						DST_SOFT_BTN_PRS
#define    DE_RING_ON							DST_RING_ON
#define    DE_RING_OFF							DST_RING_OFF
#define    DE_LINE_BTN_PRS						DST_LINE_BTN_PRS
#define    DE_MENU_BTN_PRS						DST_MENU_BTN_PRS
#define    DE_PREVIOUS_BTN_PRS					DST_PREVIOUS_BTN_PRS
#define    DE_NEXT_BTN_PRS						DST_NEXT_BTN_PRS
#define    DE_LT_QUICKFLASH						DST_LT_QUICKFLASH
#define    DE_AUDIO_ON							DST_AUDIO_ON
#define    DE_AUDIO_OFF							DST_AUDIO_OFF
#define    DE_DISPLAY_CLOCK						DST_DISPLAY_CLOCK
#define    DE_DISPLAY_TIMER						DST_DISPLAY_TIMER
#define    DE_DISPLAY_CLEAR						DST_DISPLAY_CLEAR
#define    DE_CFWD								DST_CFWD
#define    DE_CFWD_CANCELED						DST_CFWD_CANCELED
#define    DE_AUTO_ANSWER						DST_AUTO_ANSWER
#define    DE_AUTO_ANSWER_CANCELED				DST_AUTO_ANSWER_CANCELED
#define    DE_SET_BUSY							DST_SET_BUSY
#define    DE_SET_BUSY_CANCELED					DST_SET_BUSY_CANCELED
#define    DE_DESTINATION_BUSY					DST_DESTINATION_BUSY
#define    DE_REORDER							DST_REORDER
#define    DE_LT_VERY_FASTFLASHING				DST_LT_VERY_FASTFLASHING
#define    DE_SPEAKER_BTN_RLS					DST_SPEAKER_BTN_RLS
#define    DE_REDIAL_BTN_RLS					DST_REDIAL_BTN_RLS
#define    DE_TRANSFER_BTN_RLS					DST_TRANSFER_BTN_RLS
#define    DE_CONF_BTN_RLS						DST_CONF_BTN_RLS
#define    DE_DISCONNECTED						DST_DISCONNECTED
#define    DE_CONNECTED							DST_CONNECTED
#define    DE_ABANDONED							DST_ABANDONED
#define    DE_SUSPENDED							DST_SUSPENDED
#define    DE_RESUMED							DST_RESUMED
#define    DE_HELD								DST_HELD
#define    DE_RETRIEVED							DST_RETRIEVED
#define    DE_REJECTED							DST_REJECTED
#define    DE_MSG_BTN_PRS						DST_MSG_BTN_PRS
#define    DE_MSG_BTN_RLS						DST_MSG_BTN_RLS
#define    DE_SUPERVISOR_BTN_PRS				DST_SUPERVISOR_BTN_PRS
#define    DE_SUPERVISOR_BTN_RLS				DST_SUPERVISOR_BTN_RLS
#define    DE_WRAPUP_BTN_PRS					DST_WRAPUP_BTN_PRS
#define    DE_WRAPUP_BTN_RLS					DST_WRAPUP_BTN_RLS
#define    DE_READY_BTN_PRS						DST_READY_BTN_PRS
#define    DE_READY_BTN_RLS						DST_READY_BTN_RLS
#define    DE_LOGON_BTN_PRS						DST_LOGON_BTN_PRS
#define    DE_BREAK_BTN_PRS						DST_BREAK_BTN_PRS
#define    DE_AUDIO_CHG							DST_AUDIO_CHG
#define    DE_DISPLAY_MSG						DST_DISPLAY_MSG
#define    DE_WORK_BTN_PRS						DST_WORK_BTN_PRS
#define    DE_TALLY_BTN_PRS						DST_TALLY_BTN_PRS
#define    DE_PROGRAM_BTN_PRS					DST_PROGRAM_BTN_PRS
#define    DE_MUTE_BTN_PRS						DST_MUTE_BTN_PRS
#define    DE_ALERTING_AUTO_ANSWER				DST_ALERTING_AUTO_ANSWER
#define    DE_MENU_BTN_RLS						DST_MENU_BTN_RLS
#define    DE_EXIT_BTN_RLS						DST_EXIT_BTN_RLS
#define    DE_NEXT_BTN_RLS						DST_NEXT_BTN_RLS
#define    DE_PREVIOUS_BTN_RLS					DST_PREVIOUS_BTN_RLS
#define    DE_SHIFT_BTN_PRS						DST_SHIFT_BTN_PRS
#define    DE_SHIFT_BTN_RLS						DST_SHIFT_BTN_RLS
#define    DE_PAGE_BTN_PRS						DST_PAGE_BTN_PRS
#define    DE_PAGE_BTN_RLS						DST_PAGE_BTN_RLS
#define    DE_SOFT_BTN_RLS						DST_SOFT_BTN_RLS
#define    DE_LINE_LT_OFF						DST_LINE_LT_OFF
#define    DE_LINE_LT_ON						DST_LINE_LT_ON
#define    DE_LINE_LT_FLASHING					DST_LINE_LT_FLASHING
#define    DE_LINE_LT_FASTFLASHING				DST_LINE_LT_FASTFLASHING
#define    DE_LINE_LT_VERY_FASTFLASHING			DST_LINE_LT_VERY_FASTFLASHING
#define    DE_LINE_LT_QUICKFLASH				DST_LINE_LT_QUICKFLASH
#define    DE_LINE_LT_WINK						DST_LINE_LT_WINK
#define    DE_LINE_LT_SLOW_WINK					DST_LINE_LT_SLOW_WINK
#define    DE_FEATURE_LT_OFF					DST_FEATURE_LT_OFF
#define    DE_FEATURE_LT_ON						DST_FEATURE_LT_ON
#define    DE_FEATURE_LT_FLASHING				DST_FEATURE_LT_FLASHING
#define    DE_FEATURE_LT_FASTFLASHING			DST_FEATURE_LT_FASTFLASHING
#define    DE_FEATURE_LT_VERY_FASTFLASHING		DST_FEATURE_LT_VERY_FASTFLASHING
#define    DE_FEATURE_LT_QUICKFLASH				DST_FEATURE_LT_QUICKFLASH
#define    DE_FEATURE_LT_WINK					DST_FEATURE_LT_WINK
#define    DE_FEATURE_LT_SLOW_WINK				DST_FEATURE_LT_SLOW_WINK
#define    DE_SPEAKER_LT_OFF					DST_SPEAKER_LT_OFF
#define    DE_SPEAKER_LT_ON						DST_SPEAKER_LT_ON
#define    DE_SPEAKER_LT_FLASHING				DST_SPEAKER_LT_FLASHING
#define    DE_SPEAKER_LT_FASTFLASHING			DST_SPEAKER_LT_FASTFLASHING
#define    DE_SPEAKER_LT_VERY_FASTFLASHING		DST_SPEAKER_LT_VERY_FASTFLASHING
#define    DE_SPEAKER_LT_QUICKFLASH				DST_SPEAKER_LT_QUICKFLASH
#define    DE_SPEAKER_LT_WINK					DST_SPEAKER_LT_WINK
#define    DE_SPEAKER_LT_SLOW_WINK				DST_SPEAKER_LT_SLOW_WINK
#define    DE_MIC_LT_OFF						DST_MIC_LT_OFF
#define    DE_MIC_LT_ON							DST_MIC_LT_ON
#define    DE_MIC_LT_FLASHING					DST_MIC_LT_FLASHING
#define    DE_MIC_LT_FASTFLASHING				DST_MIC_LT_FASTFLASHING
#define    DE_MIC_LT_VERY_FASTFLASHING			DST_MIC_LT_VERY_FASTFLASHING
#define    DE_MIC_LT_QUICKFLASH					DST_MIC_LT_QUICKFLASH
#define    DE_MIC_LT_WINK						DST_MIC_LT_WINK
#define    DE_MIC_LT_SLOW_WINK					DST_MIC_LT_SLOW_WINK
#define    DE_HOLD_LT_OFF						DST_HOLD_LT_OFF
#define    DE_HOLD_LT_ON						DST_HOLD_LT_ON
#define    DE_HOLD_LT_FLASHING					DST_HOLD_LT_FLASHING
#define    DE_HOLD_LT_FASTFLASHING				DST_HOLD_LT_FASTFLASHING
#define    DE_HOLD_LT_VERY_FASTFLASHING			DST_HOLD_LT_VERY_FASTFLASHING
#define    DE_HOLD_LT_QUICKFLASH				DST_HOLD_LT_QUICKFLASH
#define    DE_HOLD_LT_WINK						DST_HOLD_LT_WINK
#define    DE_HOLD_LT_SLOW_WINK					DST_HOLD_LT_SLOW_WINK
#define    DE_RELEASE_LT_OFF					DST_RELEASE_LT_OFF
#define    DE_RELEASE_LT_ON						DST_RELEASE_LT_ON
#define    DE_RELEASE_LT_FLASHING				DST_RELEASE_LT_FLASHING
#define    DE_RELEASE_LT_FASTFLASHING			DST_RELEASE_LT_FASTFLASHING
#define    DE_RELEASE_LT_VERY_FASTFLASHING		DST_RELEASE_LT_VERY_FASTFLASHING
#define    DE_RELEASE_LT_QUICKFLASH				DST_RELEASE_LT_QUICKFLASH
#define    DE_RELEASE_LT_WINK					DST_RELEASE_LT_WINK
#define    DE_RELEASE_LT_SLOW_WINK				DST_RELEASE_LT_SLOW_WINK
#define    DE_HELP_LT_OFF						DST_HELP_LT_OFF
#define    DE_HELP_LT_ON						DST_HELP_LT_ON
#define    DE_HELP_LT_FLASHING					DST_HELP_LT_FLASHING
#define    DE_HELP_LT_FASTFLASHING				DST_HELP_LT_FASTFLASHING
#define    DE_HELP_LT_VERY_FASTFLASHING			DST_HELP_LT_VERY_FASTFLASHING
#define    DE_HELP_LT_QUICKFLASH				DST_HELP_LT_QUICKFLASH
#define    DE_HELP_LT_WINK						DST_HELP_LT_WINK
#define    DE_HELP_LT_SLOW_WINK					DST_HELP_LT_SLOW_WINK
#define    DE_SUPERVISOR_LT_OFF					DST_SUPERVISOR_LT_OFF
#define    DE_SUPERVISOR_LT_ON					DST_SUPERVISOR_LT_ON
#define    DE_SUPERVISOR_LT_FLASHING			DST_SUPERVISOR_LT_FLASHING
#define    DE_SUPERVISOR_LT_FASTFLASHING		DST_SUPERVISOR_LT_FASTFLASHING
#define    DE_SUPERVISOR_LT_VERY_FASTFLASHING	DST_SUPERVISOR_LT_VERY_FASTFLASHING
#define    DE_SUPERVISOR_LT_QUICKFLASH			DST_SUPERVISOR_LT_QUICKFLASH
#define    DE_SUPERVISOR_LT_WINK				DST_SUPERVISOR_LT_WINK
#define    DE_SUPERVISOR_LT_SLOW_WINK			DST_SUPERVISOR_LT_SLOW_WINK
#define    DE_READY_LT_OFF						DST_READY_LT_OFF
#define    DE_READY_LT_ON						DST_READY_LT_ON
#define    DE_READY_LT_FLASHING					DST_READY_LT_FLASHING
#define    DE_READY_LT_FASTFLASHING				DST_READY_LT_FASTFLASHING
#define    DE_READY_LT_VERY_FASTFLASHING		DST_READY_LT_VERY_FASTFLASHING
#define    DE_READY_LT_QUICKFLASH				DST_READY_LT_QUICKFLASH
#define    DE_READY_LT_WINK						DST_READY_LT_WINK
#define    DE_READY_LT_SLOW_WINK				DST_READY_LT_SLOW_WINK
#define    DE_LOGON_LT_OFF						DST_LOGON_LT_OFF
#define    DE_LOGON_LT_ON						DST_LOGON_LT_ON
#define    DE_LOGON_LT_FLASHING					DST_LOGON_LT_FLASHING
#define    DE_LOGON_LT_FASTFLASHING				DST_LOGON_LT_FASTFLASHING
#define    DE_LOGON_LT_VERY_FASTFLASHING		DST_LOGON_LT_VERY_FASTFLASHING
#define    DE_LOGON_LT_QUICKFLASH				DST_LOGON_LT_QUICKFLASH
#define    DE_LOGON_LT_WINK						DST_LOGON_LT_WINK
#define    DE_LOGON_LT_SLOW_WINK				DST_LOGON_LT_SLOW_WINK
#define    DE_WRAPUP_LT_OFF						DST_WRAPUP_LT_OFF
#define    DE_WRAPUP_LT_ON						DST_WRAPUP_LT_ON
#define    DE_WRAPUP_LT_FLASHING				DST_WRAPUP_LT_FLASHING
#define    DE_WRAPUP_LT_FASTFLASHING			DST_WRAPUP_LT_FASTFLASHING
#define    DE_WRAPUP_LT_VERY_FASTFLASHING		DST_WRAPUP_LT_VERY_FASTFLASHING
#define    DE_WRAPUP_LT_QUICKFLASH				DST_WRAPUP_LT_QUICKFLASH
#define    DE_WRAPUP_LT_WINK					DST_WRAPUP_LT_WINK
#define    DE_WRAPUP_LT_SLOW_WINK				DST_WRAPUP_LT_SLOW_WINK
#define    DE_RING_LT_OFF						DST_RING_LT_OFF
#define    DE_RING_LT_ON						DST_RING_LT_ON
#define    DE_RING_LT_FLASHING					DST_RING_LT_FLASHING
#define    DE_RING_LT_FASTFLASHING				DST_RING_LT_FASTFLASHING
#define    DE_RING_LT_VERY_FASTFLASHING			DST_RING_LT_VERY_FASTFLASHING
#define    DE_RING_LT_QUICKFLASH				DST_RING_LT_QUICKFLASH
#define    DE_RING_LT_WINK						DST_RING_LT_WINK
#define    DE_RING_LT_SLOW_WINK					DST_RING_LT_SLOW_WINK
#define    DE_ANSWER_LT_OFF						DST_ANSWER_LT_OFF
#define    DE_ANSWER_LT_ON						DST_ANSWER_LT_ON
#define    DE_ANSWER_LT_FLASHING				DST_ANSWER_LT_FLASHING
#define    DE_ANSWER_LT_FASTFLASHING			DST_ANSWER_LT_FASTFLASHING
#define    DE_ANSWER_LT_VERY_FASTFLASHING		DST_ANSWER_LT_VERY_FASTFLASHING
#define    DE_ANSWER_LT_QUICKFLASH				DST_ANSWER_LT_QUICKFLASH
#define    DE_ANSWER_LT_WINK					DST_ANSWER_LT_WINK
#define    DE_ANSWER_LT_SLOW_WINK				DST_ANSWER_LT_SLOW_WINK
#define    DE_PROGRAM_LT_OFF					DST_PROGRAM_LT_OFF
#define    DE_PROGRAM_LT_ON						DST_PROGRAM_LT_ON
#define    DE_PROGRAM_LT_FLASHING				DST_PROGRAM_LT_FLASHING
#define    DE_PROGRAM_LT_FASTFLASHING			DST_PROGRAM_LT_FASTFLASHING
#define    DE_PROGRAM_LT_VERY_FASTFLASHING		DST_PROGRAM_LT_VERY_FASTFLASHING
#define    DE_PROGRAM_LT_QUICKFLASH				DST_PROGRAM_LT_QUICKFLASH
#define    DE_PROGRAM_LT_WINK					DST_PROGRAM_LT_WINK
#define    DE_PROGRAM_LT_MEDIUM_WINK			DST_PROGRAM_LT_MEDIUM_WINK
#define    DE_MSG_LT_OFF						DST_MSG_LT_OFF
#define    DE_MSG_LT_ON							DST_MSG_LT_ON
#define    DE_MSG_LT_FLASHING					DST_MSG_LT_FLASHING
#define    DE_MSG_LT_FASTFLASHING				DST_MSG_LT_FASTFLASHING
#define    DE_MSG_LT_VERY_FASTFLASHING			DST_MSG_LT_VERY_FASTFLASHING
#define    DE_MSG_LT_QUICKFLASH					DST_MSG_LT_QUICKFLASH
#define    DE_MSG_LT_WINK						DST_MSG_LT_WINK
#define    DE_MSG_LT_SLOW_WINK					DST_MSG_LT_SLOW_WINK
#define    DE_TRANSFER_LT_OFF					DST_TRANSFER_LT_OFF
#define    DE_TRANSFER_LT_ON					DST_TRANSFER_LT_ON
#define    DE_TRANSFER_LT_FLASHING				DST_TRANSFER_LT_FLASHING
#define    DE_TRANSFER_LT_FASTFLASHING			DST_TRANSFER_LT_FASTFLASHING0x10DB
#define    DE_TRANSFER_LT_VERY_FASTFLASHING		DST_TRANSFER_LT_VERY_FASTFLASHING
#define    DE_TRANSFER_LT_QUICKFLASH			DST_TRANSFER_LT_QUICKFLASH
#define    DE_TRANSFER_LT_WINK					DST_TRANSFER_LT_WINK
#define    DE_TRANSFER_LT_MEDIUM_WINK			DST_TRANSFER_LT_MEDIUM_WINK
#define    DE_CONFERENCE_LT_OFF					DST_CONFERENCE_LT_OFF
#define    DE_CONFERENCE_LT_ON					DST_CONFERENCE_LT_ON
#define    DE_CONFERENCE_LT_FLASHING			DST_CONFERENCE_LT_FLASHING
#define    DE_CONFERENCE_LT_FASTFLASHING		DST_CONFERENCE_LT_FASTFLASHING
#define    DE_CONFERENCE_LT_VERY_FASTFLASHING	DST_CONFERENCE_LT_VERY_FASTFLASHING
#define    DE_CONFERENCE_LT_QUICKFLASH			DST_CONFERENCE_LT_QUICKFLASH
#define    DE_CONFERENCE_LT_WINK				DST_CONFERENCE_LT_WINK
#define    DE_CONFERENCE_LT_MEDIUM_WINK			DST_CONFERENCE_LT_MEDIUM_WINK
#define    DE_SOFT_LT_OFF						DST_SOFT_LT_OFF
#define    DE_SOFT_LT_ON						DST_SOFT_LT_ON
#define    DE_SOFT_LT_FLASHING					DST_SOFT_LT_FLASHING
#define    DE_SOFT_LT_FASTFLASHING				DST_SOFT_LT_FASTFLASHING
#define    DE_SOFT_LT_VERY_FASTFLASHING			DST_SOFT_LT_VERY_FASTFLASHING
#define    DE_SOFT_LT_QUICKFLASH				DST_SOFT_LT_QUICKFLASH
#define    DE_SOFT_LT_WINK						DST_SOFT_LT_WINK
#define    DE_SOFT_LT_SLOW_WINK					DST_SOFT_LT_SLOW_WINK
#define    DE_MENU_LT_OFF						DST_MENU_LT_OFF
#define    DE_MENU_LT_ON						DST_MENU_LT_ON
#define    DE_MENU_LT_FLASHING					DST_MENU_LT_FLASHING
#define    DE_MENU_LT_FASTFLASHING				DST_MENU_LT_FASTFLASHING
#define    DE_MENU_LT_VERY_FASTFLASHING			DST_MENU_LT_VERY_FASTFLASHING
#define    DE_MENU_LT_QUICKFLASH				DST_MENU_LT_QUICKFLASH
#define    DE_MENU_LT_WINK						DST_MENU_LT_WINK
#define    DE_MENU_LT_SLOW_WINK					DST_MENU_LT_SLOW_WINK
#define    DE_CALLWAITING_LT_OFF				DST_CALLWAITING_LT_OFF
#define    DE_CALLWAITING_LT_ON					DST_CALLWAITING_LT_ON
#define    DE_CALLWAITING_LT_FLASHING			DST_CALLWAITING_LT_FLASHING
#define    DE_CALLWAITING_LT_FASTFLASHING		DST_CALLWAITING_LT_FASTFLASHING
#define    DE_CALLWAITING_LT_VERY_FASTFLASHING	DST_CALLWAITING_LT_VERY_FASTFLASHING
#define    DE_CALLWAITING_LT_QUICKFLASH			DST_CALLWAITING_LT_QUICKFLASH
#define    DE_CALLWAITING_LT_WINK				DST_CALLWAITING_LT_WINK
#define    DE_CALLWAITING_LT_SLOW_WINK			DST_CALLWAITING_LT_SLOW_WINK
#define    DE_REDIAL_LT_OFF						DST_REDIAL_LT_OFF
#define    DE_REDIAL_LT_ON						DST_REDIAL_LT_ON
#define    DE_REDIAL_LT_FLASHING				DST_REDIAL_LT_FLASHING
#define    DE_REDIAL_LT_FASTFLASHING			DST_REDIAL_LT_FASTFLASHING
#define    DE_REDIAL_LT_VERY_FASTFLASHING		DST_REDIAL_LT_VERY_FASTFLASHING
#define    DE_REDIAL_LT_QUICKFLASH				DST_REDIAL_LT_QUICKFLASH
#define    DE_REDIAL_LT_WINK					DST_REDIAL_LT_WINK
#define    DE_REDIAL_LT_SLOW_WINK				DST_REDIAL_LT_SLOW_WINK
#define    DE_PAGE_LT_OFF						DST_PAGE_LT_OFF
#define    DE_PAGE_LT_ON						DST_PAGE_LT_ON
#define    DE_PAGE_LT_FLASHING					DST_PAGE_LT_FLASHING
#define    DE_PAGE_LT_FASTFLASHING				DST_PAGE_LT_FASTFLASHING
#define    DE_PAGE_LT_VERY_FASTFLASHING			DST_PAGE_LT_VERY_FASTFLASHING
#define    DE_PAGE_LT_QUICKFLASH				DST_PAGE_LT_QUICKFLASH
#define    DE_CTRL_BTN_PRS						DST_CTRL_BTN_PRS
#define    DE_CTRL_BTN_RLS						DST_CTRL_BTN_RLS
#define    DE_CANCEL_BTN_PRS					DST_CANCEL_BTN_PRS
#define    DE_CANCEL_BTN_RLS					DST_CANCEL_BTN_RLS
#define    DE_MIC_BTN_PRS						DST_MIC_BTN_PRS
#define    DE_MIC_BTN_RLS						DST_MIC_BTN_RLS
#define    DE_FLASH_BTN_PRS						DST_FLASH_BTN_PRS
#define    DE_FLASH_BTN_RLS						DST_FLASH_BTN_RLS
#define    DE_DIRECTORY_BTN_PRS					DST_DIRECTORY_BTN_PRS
#define    DE_DIRECTORY_BTN_RLS					DST_DIRECTORY_BTN_RLS
#define    DE_HANDSFREE_BTN_PRS					DST_HANDSFREE_BTN_PRS
#define    DE_HANDSFREE_BTN_RLS					DST_HANDSFREE_BTN_RLS
#define    DE_RINGTONE_BTN_PRS					DST_RINGTONE_BTN_PRS
#define    DE_RINGTONE_BTN_RLS					DST_RINGTONE_BTN_RLS
#define    DE_SAVE_BTN_PRS						DST_SAVE_BTN_PRS
#define    DE_SAVE_BTN_RLS						DST_SAVE_BTN_RLS
#define    DE_MUTE_LT_OFF						DST_MUTE_LT_OFF
#define    DE_MUTE_LT_ON						DST_MUTE_LT_ON
#define    DE_MUTE_LT_FLASHING					DST_MUTE_LT_FLASHING
#define    DE_MUTE_LT_FASTFLASHING				DST_MUTE_LT_FASTFLASHING
#define    DE_MUTE_LT_VERY_FASTFLASHING			DST_MUTE_LT_VERY_FASTFLASHING
#define    DE_MUTE_LT_QUICKFLASH				DST_MUTE_LT_QUICKFLASH
#define    DE_MUTE_LT_WINK						DST_MUTE_LT_WINK
#define    DE_MUTE_LT_SLOW_WINK					DST_MUTE_LT_SLOW_WINK
#define    DE_MUTE_LT_MEDIUM_WINK				DST_MUTE_LT_MEDIUM_WINK
#define    DE_HANDSFREE_LT_OFF					DST_HANDSFREE_LT_OFF
#define    DE_HANDSFREE_LT_ON					DST_HANDSFREE_LT_ON
#define    DE_HANDSFREE_LT_FLASHING				DST_HANDSFREE_LT_FLASHING
#define    DE_HANDSFREE_LT_FASTFLASHING			DST_HANDSFREE_LT_FASTFLASHING
#define    DE_HANDSFREE_LT_VERY_FASTFLASHING	DST_HANDSFREE_LT_VERY_FASTFLASHING
#define    DE_HANDSFREE_LT_QUICKFLASH			DST_HANDSFREE_LT_QUICKFLASH
#define    DE_HANDSFREE_LT_WINK					DST_HANDSFREE_LT_WINK
#define    DE_HANDSFREE_LT_SLOW_WINK			DST_HANDSFREE_LT_SLOW_WINK
#define    DE_HANDSFREE_LT_MEDIUM_WINK			DST_HANDSFREE_LT_MEDIUM_WINK
#define    DE_DIRECTORY_LT_OFF					DST_DIRECTORY_LT_OFF
#define    DE_DIRECTORY_LT_ON					DST_DIRECTORY_LT_ON
#define    DE_DIRECTORY_LT_FLASHING				DST_DIRECTORY_LT_FLASHING
#define    DE_DIRECTORY_LT_FASTFLASHING			DST_DIRECTORY_LT_FASTFLASHING
#define    DE_DIRECTORY_LT_VERY_FASTFLASHING	DST_DIRECTORY_LT_VERY_FASTFLASHING
#define    DE_DIRECTORY_LT_QUICKFLASH			DST_DIRECTORY_LT_QUICKFLASH
#define    DE_DIRECTORY_LT_WINK					DST_DIRECTORY_LT_WINK
#define    DE_DIRECTORY_LT_SLOW_WINK			DST_DIRECTORY_LT_SLOW_WINK
#define    DE_DIRECTORY_LT_MEDIUM_WINK			DST_DIRECTORY_LT_MEDIUM_WINK
#define    DE_RINGTONE_LT_OFF					DST_RINGTONE_LT_OFF
#define    DE_RINGTONE_LT_ON					DST_RINGTONE_LT_ON
#define    DE_RINGTONE_LT_FLASHING				DST_RINGTONE_LT_FLASHING
#define    DE_RINGTONE_LT_FASTFLASHING			DST_RINGTONE_LT_FASTFLASHING
#define    DE_RINGTONE_LT_VERY_FASTFLASHING		DST_RINGTONE_LT_VERY_FASTFLASHING
#define    DE_RINGTONE_LT_QUICKFLASH			DST_RINGTONE_LT_QUICKFLASH
#define    DE_RINGTONE_LT_WINK					DST_RINGTONE_LT_WINK
#define    DE_RINGTONE_LT_SLOW_WINK				DST_RINGTONE_LT_SLOW_WINK
#define    DE_RINGTONE_LT_MEDIUM_WINK			DST_RINGTONE_LT_MEDIUM_WINK
#define    DE_SAVE_LT_OFF						DST_SAVE_LT_OFF
#define    DE_SAVE_LT_ON						DST_SAVE_LT_ON
#define    DE_SAVE_LT_FLASHING					DST_SAVE_LT_FLASHING
#define    DE_SAVE_LT_FASTFLASHING				DST_SAVE_LT_FASTFLASHING
#define    DE_SAVE_LT_VERY_FASTFLASHING			DST_SAVE_LT_VERY_FASTFLASHING
#define    DE_SAVE_LT_QUICKFLASH				DST_SAVE_LT_QUICKFLASH
#define    DE_SAVE_LT_WINK						DST_SAVE_LT_WINK
#define    DE_SAVE_LT_SLOW_WINK					DST_SAVE_LT_SLOW_WINK
#define    DE_SAVE_LT_MEDIUM_WINK				DST_SAVE_LT_MEDIUM_WINK
#define    DE_FUNC_LT_WINK						DST_FUNC_LT_WINK
#define    DE_FUNC_LT_SLOW_WINK					DST_FUNC_LT_SLOW_WINK
#define    DE_FUNC_LT_MEDIUM_WINK				DST_FUNC_LT_MEDIUM_WINK
#define    DE_CALLWAITING_BTN_PRS				DST_CALLWAITING_BTN_PRS
#define    DE_CALLWAITING_BTN_RLS				DST_CALLWAITING_BTN_RLS
#define    DE_PARK_BTN_PRS						DST_PARK_BTN_PRS
#define    DE_PARK_BTN_RLS						DST_PARK_BTN_RLS
#define    DE_NEWCALL_BTN_PRS					DST_NEWCALL_BTN_PRS
#define    DE_NEWCALL_BTN_RLS					DST_NEWCALL_BTN_RLS
#define    DE_PARK_LT_OFF						DST_PARK_LT_OFF
#define    DE_PARK_LT_ON						DST_PARK_LT_ON
#define    DE_PARK_LT_FLASHING					DST_PARK_LT_FLASHING
#define    DE_PARK_LT_FASTFLASHING				DST_PARK_LT_FASTFLASHING
#define    DE_PARK_LT_VERY_FASTFLASHING			DST_PARK_LT_VERY_FASTFLASHING
#define    DE_PARK_LT_QUICKFLASH				DST_PARK_LT_QUICKFLASH
#define    DE_PARK_LT_WINK						DST_PARK_LT_WINK
#define    DE_PARK_LT_SLOW_WINK					DST_PARK_LT_SLOW_WINK
#define    DE_PARK_LT_MEDIUM_WINK				DST_PARK_LT_MEDIUM_WINK
#define    DE_SCROLL_BTN_PRS					DST_SCROLL_BTN_PRS
#define    DE_SCROLL_BTN_RLS					DST_SCROLL_BTN_RLS
#define    DE_DIVERT_BTN_PRS					DST_DIVERT_BTN_PRS
#define    DE_DIVERT_BTN_RLS					DST_DIVERT_BTN_RLS
#define    DE_GROUP_BTN_PRS						DST_GROUP_BTN_PRS
#define    DE_GROUP_BTN_RLS						DST_GROUP_BTN_RLS
#define    DE_SPEEDDIAL_BTN_PRS					DST_SPEEDDIAL_BTN_PRS
#define    DE_SPEEDDIAL_BTN_RLS					DST_SPEEDDIAL_BTN_RLS
#define    DE_DND_BTN_PRS						DST_DND_BTN_PRS
#define    DE_DND_BTN_RLS						DST_DND_BTN_RLS
#define    DE_ENTER_BTN_PRS						DST_ENTER_BTN_PRS
#define    DE_ENTER_BTN_RLS						DST_ENTER_BTN_RLS
#define    DE_CLEAR_BTN_PRS						DST_CLEAR_BTN_PRS
#define    DE_CLEAR_BTN_RLS						DST_CLEAR_BTN_RLS
#define    DE_DESTINATION_BTN_PRS				DST_DESTINATION_BTN_PRS
#define    DE_DESTINATION_BTN_RLS				DST_DESTINATION_BTN_RLS
#define    DE_DND_LT_OFF						DST_DND_LT_OFF
#define    DE_DND_LT_ON							DST_DND_LT_ON
#define    DE_DND_LT_FLASHING					DST_DND_LT_FLASHING
#define    DE_DND_LT_FASTFLASHING				DST_DND_LT_FASTFLASHING
#define    DE_DND_LT_VERY_FASTFLASHING			DST_DND_LT_VERY_FASTFLASHING
#define    DE_DND_LT_QUICKFLASH					DST_DND_LT_QUICKFLASH
#define    DE_DND_LT_WINK						DST_DND_LT_WINK
#define    DE_DND_LT_SLOW_WINK					DST_DND_LT_SLOW_WINK
#define    DE_DND_LT_MEDIUM_WINK				DST_DND_LT_MEDIUM_WINK
#define    DE_GROUP_LT_OFF						DST_GROUP_LT_OFF
#define    DE_GROUP_LT_ON						DST_GROUP_LT_ON
#define    DE_GROUP_LT_FLASHING					DST_GROUP_LT_FLASHING
#define    DE_GROUP_LT_FASTFLASHING				DST_GROUP_LT_FASTFLASHING
#define    DE_GROUP_LT_VERY_FASTFLASHING		DST_GROUP_LT_VERY_FASTFLASHING
#define    DE_GROUP_LT_QUICKFLASH				DST_GROUP_LT_QUICKFLASH
#define    DE_GROUP_LT_WINK						DST_GROUP_LT_WINK
#define    DE_GROUP_LT_SLOW_WINK				DST_GROUP_LT_SLOW_WINK
#define    DE_GROUP_LT_MEDIUM_WINK				DST_GROUP_LT_MEDIUM_WINK
#define    DE_DIVERT_LT_OFF						DST_DIVERT_LT_OFF
#define    DE_DIVERT_LT_ON						DST_DIVERT_LT_ON
#define    DE_DIVERT_LT_FLASHING				DST_DIVERT_LT_FLASHING
#define    DE_DIVERT_LT_FASTFLASHING			DST_DIVERT_LT_FASTFLASHING
#define    DE_DIVERT_LT_VERY_FASTFLASHING		DST_DIVERT_LT_VERY_FASTFLASHING
#define    DE_DIVERT_LT_QUICKFLASH				DST_DIVERT_LT_QUICKFLASH
#define    DE_DIVERT_LT_WINK					DST_DIVERT_LT_WINK
#define    DE_DIVERT_LT_SLOW_WINK				DST_DIVERT_LT_SLOW_WINK
#define    DE_DIVERT_LT_MEDIUM_WINK				DST_DIVERT_LT_MEDIUM_WINK
#define    DE_SCROLL_LT_OFF						DST_SCROLL_LT_OFF
#define    DE_SCROLL_LT_ON						DST_SCROLL_LT_ON
#define    DE_SCROLL_LT_FLASHING				DST_SCROLL_LT_FLASHING
#define    DE_SCROLL_LT_FASTFLASHING			DST_SCROLL_LT_FASTFLASHING
#define    DE_SCROLL_LT_VERY_FASTFLASHING		DST_SCROLL_LT_VERY_FASTFLASHING
#define    DE_SCROLL_LT_QUICKFLASH				DST_SCROLL_LT_QUICKFLASH
#define    DE_SCROLL_LT_WINK					DST_SCROLL_LT_WINK
#define    DE_SCROLL_LT_SLOW_WINK				DST_SCROLL_LT_SLOW_WINK
#define    DE_SCROLL_LT_MEDIUM_WINK				DST_SCROLL_LT_MEDIUM_WINK
#define    DE_CALLBACK_BTN_PRS					DST_CALLBACK_BTN_PRS
#define    DE_CALLBACK_BTN_RLS					DST_CALLBACK_BTN_RLS
#define    DE_FLASH_LT_OFF						DST_FLASH_LT_OFF
#define    DE_FLASH_LT_ON						DST_FLASH_LT_ON
#define    DE_FLASH_LT_FLASHING					DST_FLASH_LT_FLASHING
#define    DE_FLASH_LT_FASTFLASHING				DST_FLASH_LT_FASTFLASHING
#define    DE_FLASH_LT_VERY_FASTFLASHING		DST_FLASH_LT_VERY_FASTFLASHING
#define    DE_FLASH_LT_QUICKFLASH				DST_FLASH_LT_QUICKFLASH
#define    DE_FLASH_LT_WINK						DST_FLASH_LT_WINK
#define    DE_FLASH_LT_SLOW_WINK				DST_FLASH_LT_SLOW_WINK
#define    DE_FLASH_LT_MEDIUM_WINK				DST_FLASH_LT_MEDIUM_WINK
#define    DE_MODE_BTN_PRS						DST_MODE_BTN_PRS
#define    DE_MODE_BTN_RLS						DST_MODE_BTN_RLS
#define    DE_SPEAKER_LT_MEDIUM_WINK			DST_SPEAKER_LT_MEDIUM_WINK
#define    DE_MSG_LT_MEDIUM_WINK				DST_MSG_LT_MEDIUM_WINK
#define    DE_SPEEDDIAL_LT_OFF					DST_SPEEDDIAL_LT_OFF
#define    DE_SPEEDDIAL_LT_ON					DST_SPEEDDIAL_LT_ON
#define    DE_SPEEDDIAL_LT_FLASHING				DST_SPEEDDIAL_LT_FLASHING
#define    DE_SPEEDDIAL_LT_FASTFLASHING			DST_SPEEDDIAL_LT_FASTFLASHING
#define    DE_SPEEDDIAL_LT_VERY_FASTFLASHING	DST_SPEEDDIAL_LT_VERY_FASTFLASHING
#define    DE_SPEEDDIAL_LT_QUICKFLASH			DST_SPEEDDIAL_LT_QUICKFLASH
#define    DE_SPEEDDIAL_LT_WINK					DST_SPEEDDIAL_LT_WINK
#define    DE_SPEEDDIAL_LT_SLOW_WINK			DST_SPEEDDIAL_LT_SLOW_WINK
#define    DE_SPEEDDIAL_LT_MEDIUM_WINK			DST_SPEEDDIAL_LT_MEDIUM_WINK
#define    DE_SELECT_BTN_PRS					DST_SELECT_BTN_PRS
#define    DE_SELECT_BTN_RLS					DST_SELECT_BTN_RLS
#define    DE_PAUSE_BTN_PRS						DST_PAUSE_BTN_PRS
#define    DE_PAUSE_BTN_RLS						DST_PAUSE_BTN_RLS
#define    DE_INTERCOM_BTN_PRS					DST_INTERCOM_BTN_PRS
#define    DE_INTERCOM_BTN_RLS					DST_INTERCOM_BTN_RLS
#define    DE_INTERCOM_LT_OFF					DST_INTERCOM_LT_OFF
#define    DE_INTERCOM_LT_ON					DST_INTERCOM_LT_ON
#define    DE_INTERCOM_LT_FLASHING				DST_INTERCOM_LT_FLASHING
#define    DE_INTERCOM_LT_FASTFLASHING			DST_INTERCOM_LT_FASTFLASHING
#define    DE_INTERCOM_LT_VERY_FASTFLASHING		DST_INTERCOM_LT_VERY_FASTFLASHING
#define    DE_INTERCOM_LT_QUICKFLASH			DST_INTERCOM_LT_QUICKFLASH
#define    DE_INTERCOM_LT_WINK					DST_INTERCOM_LT_WINK
#define    DE_INTERCOM_LT_SLOW_WINK				DST_INTERCOM_LT_SLOW_WINK
#define    DE_INTERCOM_LT_MEDIUM_WINK			DST_INTERCOM_LT_MEDIUM_WINK
#define    DE_CFWD_LT_OFF						DST_CFWD_LT_OFF
#define    DE_CFWD_LT_ON						DST_CFWD_LT_ON
#define    DE_CFWD_LT_FLASHING					DST_CFWD_LT_FLASHING
#define    DE_CFWD_LT_FASTFLASHING				DST_CFWD_LT_FASTFLASHING
#define    DE_CFWD_LT_VERY_FASTFLASHING			DST_CFWD_LT_VERY_FASTFLASHING
#define    DE_CFWD_LT_QUICKFLASH				DST_CFWD_LT_QUICKFLASH
#define    DE_CFWD_LT_WINK						DST_CFWD_LT_WINK
#define    DE_CFWD_LT_SLOW_WINK					DST_CFWD_LT_SLOW_WINK
#define    DE_CFWD_LT_MEDIUM_WINK				DST_CFWD_LT_MEDIUM_WINK
#define    DE_CFWD_BTN_PRS						DST_CFWD_BTN_PRS
#define    DE_CFWD_BTN_RLS						DST_CFWD_BTN_RLS
#define    DE_SPECIAL_LT_OFF					DST_SPECIAL_LT_OFF
#define    DE_SPECIAL_LT_ON						DST_SPECIAL_LT_ON
#define    DE_SPECIAL_LT_FLASHING				DST_SPECIAL_LT_FLASHING
#define    DE_SPECIAL_LT_FASTFLASHING			DST_SPECIAL_LT_FASTFLASHING
#define    DE_SPECIAL_LT_VERY_FASTFLASHING		DST_SPECIAL_LT_VERY_FASTFLASHING
#define    DE_SPECIAL_LT_QUICKFLASH				DST_SPECIAL_LT_QUICKFLASH
#define    DE_SPECIAL_LT_WINK					DST_SPECIAL_LT_WINK
#define    DE_SPECIAL_LT_SLOW_WINK				DST_SPECIAL_LT_SLOW_WINK
#define    DE_SPECIAL_LT_MEDIUM_WINK			DST_SPECIAL_LT_MEDIUM_WINK
#define    DE_SPECIAL_BTN_PRS					DST_SPECIAL_BTN_PRS
#define    DE_SPECIAL_BTN_RLS					DST_SPECIAL_BTN_RLS
#define    DE_FORWARD_LT_OFF					DST_FORWARD_LT_OFF
#define    DE_FORWARD_LT_ON						DST_FORWARD_LT_ON
#define    DE_FORWARD_LT_FLASHING				DST_FORWARD_LT_FLASHING
#define    DE_FORWARD_LT_FASTFLASHING			DST_FORWARD_LT_FASTFLASHING
#define    DE_FORWARD_LT_VERY_FASTFLASHING		DST_FORWARD_LT_VERY_FASTFLASHING
#define    DE_FORWARD_LT_QUICKFLASH				DST_FORWARD_LT_QUICKFLASH
#define    DE_FORWARD_LT_WINK					DST_FORWARD_LT_WINK
#define    DE_FORWARD_LT_SLOW_WINK				DST_FORWARD_LT_SLOW_WINK
#define    DE_FORWARD_LT_MEDIUM_WINK			DST_FORWARD_LT_MEDIUM_WINK
#define    DE_FORWARD_BTN_PRS					DST_FORWARD_BTN_PRS
#define    DE_FORWARD_BTN_RLS					DST_FORWARD_BTN_RLS
#define    DE_OUTGOING_LT_OFF					DST_OUTGOING_LT_OFF
#define    DE_OUTGOING_LT_ON					DST_OUTGOING_LT_ON
#define    DE_OUTGOING_LT_FLASHING				DST_OUTGOING_LT_FLASHING
#define    DE_OUTGOING_LT_FASTFLASHING			DST_OUTGOING_LT_FASTFLASHING
#define    DE_OUTGOING_LT_VERY_FASTFLASHING		DST_OUTGOING_LT_VERY_FASTFLASHING
#define    DE_OUTGOING_LT_QUICKFLASH			DST_OUTGOING_LT_QUICKFLASH
#define    DE_OUTGOING_LT_WINK					DST_OUTGOING_LT_WINK
#define    DE_OUTGOING_LT_SLOW_WINK				DST_OUTGOING_LT_SLOW_WINK
#define    DE_OUTGOING_LT_MEDIUM_WINK			DST_OUTGOING_LT_MEDIUM_WINK
#define    DE_OUTGOING_BTN_PRS					DST_OUTGOING_BTN_PRS
#define    DE_OUTGOING_BTN_RLS					DST_OUTGOING_BTN_RLS
#define    DE_BACKSPACE_LT_OFF					DST_BACKSPACE_LT_OFF
#define    DE_BACKSPACE_LT_ON					DST_BACKSPACE_LT_ON
#define    DE_BACKSPACE_LT_FLASHING				DST_BACKSPACE_LT_FLASHING
#define    DE_BACKSPACE_LT_FASTFLASHING			DST_BACKSPACE_LT_FASTFLASHING
#define    DE_BACKSPACE_LT_VERY_FASTFLASHING	DST_BACKSPACE_LT_VERY_FASTFLASHING
#define    DE_BACKSPACE_LT_QUICKFLASH			DST_BACKSPACE_LT_QUICKFLASH
#define    DE_BACKSPACE_LT_WINK					DST_BACKSPACE_LT_WINK
#define    DE_BACKSPACE_LT_SLOW_WINK			DST_BACKSPACE_LT_SLOW_WINK
#define    DE_BACKSPACE_LT_MEDIUM_WINK			DST_BACKSPACE_LT_MEDIUM_WINK
#define    DE_BACKSPACE_BTN_PRS					DST_BACKSPACE_BTN_PRS
#define    DE_BACKSPACE_BTN_RLS					DST_BACKSPACE_BTN_RLS
#define    DE_START_TONE						DST_START_TONE
#define    DE_STOP_TONE							DST_STOP_TONE
#define    DE_FLASHHOOK							DST_FLASHHOOK
#define    DE_LINE_BTN_RLS						DST_LINE_BTN_RLS
#define    DE_FEATURE_BTN_RLS					DST_FEATURE_BTN_RLS
#define    DE_MUTE_BTN_RLS						DST_MUTE_BTN_RLS
#define    DE_HELP_BTN_RLS						DST_HELP_BTN_RLS
#define    DE_LOGON_BTN_RLS						DST_LOGON_BTN_RLS
#define    DE_ANSWER_BTN_RLS					DST_ANSWER_BTN_RLS
#define    DE_PROGRAM_BTN_RLS					DE_PROGRAM_BTN_RLS
#define    DE_CONFERENCE_BTN_RLS				DST_CONFERENCE_BTN_RLS
#define    DE_RECALL_BTN_RLS					DST_RECALL_BTN_RLS
#define    DE_BREAK_BTN_RLS						DST_BREAK_BTN_RLS
#define    DE_WORK_BTN_RLS						DST_WORK_BTN_RLS
#define    DE_TALLY_BTN_RLS						DST_TALLY_BTN_RLS
#define    DE_EXPAND_LT_OFF						DST_EXPAND_LT_OFF
#define    DE_EXPAND_LT_ON						DST_EXPAND_LT_ON
#define    DE_EXPAND_LT_FLASHING				DST_EXPAND_LT_FLASHING
#define    DE_EXPAND_LT_FASTFLASHING			DST_EXPAND_LT_FASTFLASHING
#define    DE_EXPAND_LT_VERY_FASTFLASHING		DST_EXPAND_LT_VERY_FASTFLASHING
#define    DE_EXPAND_LT_QUICKFLASH				DST_EXPAND_LT_QUICKFLASH
#define    DE_EXPAND_LT_WINK					DST_EXPAND_LT_WINK
#define    DE_EXPAND_LT_SLOW_WINK				DST_EXPAND_LT_SLOW_WINK
#define    DE_EXPAND_LT_MEDIUM_WINK				DST_EXPAND_LT_MEDIUM_WINK
#define    DE_EXPAND_BTN_PRS					DST_EXPAND_BTN_PRS
#define    DE_EXPAND_BTN_RLS					DST_EXPAND_BTN_RLS
#define    DE_SERVICES_LT_OFF					DST_SERVICES_LT_OFF
#define    DE_SERVICES_LT_ON					DST_SERVICES_LT_ON
#define    DE_SERVICES_LT_FLASHING				DST_SERVICES_LT_FLASHING
#define    DE_SERVICES_LT_FASTFLASHING			DST_SERVICES_LT_FASTFLASHING
#define    DE_SERVICES_LT_VERY_FASTFLASHING		DST_SERVICES_LT_VERY_FASTFLASHING
#define    DE_SERVICES_LT_QUICKFLASH			DST_SERVICES_LT_QUICKFLASH
#define    DE_SERVICES_LT_WINK					DST_SERVICES_LT_WINK
#define    DE_SERVICES_LT_SLOW_WINK				DST_SERVICES_LT_SLOW_WINK
#define    DE_SERVICES_LT_MEDIUM_WINK			DST_SERVICES_LT_MEDIUM_WINK
#define    DE_SERVICES_BTN_PRS					DST_SERVICES_BTN_PRS
#define    DE_SERVICES_BTN_RLS					DST_SERVICES_BTN_RLS
#define    DE_HEADSET_LT_OFF					DST_HEADSET_LT_OFF
#define    DE_HEADSET_LT_ON						DST_HEADSET_LT_ON
#define    DE_HEADSET_LT_FLASHING				DST_HEADSET_LT_FLASHING
#define    DE_HEADSET_LT_FASTFLASHING			DST_HEADSET_LT_FASTFLASHING
#define    DE_HEADSET_LT_VERY_FASTFLASHING		DST_HEADSET_LT_VERY_FASTFLASHING
#define    DE_HEADSET_LT_QUICKFLASH				DST_HEADSET_LT_QUICKFLASH
#define    DE_HEADSET_LT_WINK					DST_HEADSET_LT_WINK
#define    DE_HEADSET_LT_SLOW_WINK				DST_HEADSET_LT_SLOW_WINK
#define    DE_HEADSET_LT_MEDIUM_WINK			DST_HEADSET_LT_MEDIUM_WINK
#define    DE_HEADSET_BTN_PRS					DST_HEADSET_BTN_PRS
#define    DE_HEADSET_BTN_RLS					DST_HEADSET_BTN_RLS
#define    DE_NAVIGATION_BTN_PRS				DST_NAVIGATION_BTN_PRS
#define    DE_NAVIGATION_BTN_RLS				DST_NAVIGATION_BTN_RLS
#define    DE_COPY_LT_OFF						DST_COPY_LT_OFF
#define    DE_COPY_LT_ON						DST_COPY_LT_ON
#define    DE_COPY_LT_FLASHING					DST_COPY_LT_FLASHING
#define    DE_COPY_LT_FASTFLASHING				DST_COPY_LT_FASTFLASHING
#define    DE_COPY_LT_VERY_FASTFLASHING			DST_COPY_LT_VERY_FASTFLASHING
#define    DE_COPY_LT_QUICKFLASH				DST_COPY_LT_QUICKFLASH
#define    DE_COPY_LT_WINK						DST_COPY_LT_WINK
#define    DE_COPY_LT_SLOW_WINK					DST_COPY_LT_SLOW_WINK
#define    DE_COPY_LT_MEDIUM_WINK				DST_COPY_LT_MEDIUM_WINK
#define    DE_COPY_BTN_PRS						DST_COPY_BTN_PRS
#define    DE_COPY_BTN_RLS						DST_COPY_BTN_RLS
#define    DE_LINE_LT_MEDIUM_WINK				DST_LINE_LT_MEDIUM_WINK
#define    DE_MIC_LT_MEDIUM_WINK				DST_MIC_LT_MEDIUM_WINK
#define    DE_HOLD_LT_MEDIUM_WINK				DST_HOLD_LT_MEDIUM_WINK
#define    DE_RELEASE_LT_MEDIUM_WINK			DST_RELEASE_LT_MEDIUM_WINK
#define    DE_HELP_LT_MEDIUM_WINK				DST_HELP_LT_MEDIUM_WINK
#define    DE_SUPERVISOR_LT_MEDIUM_WINK			DST_SUPERVISOR_LT_MEDIUM_WINK
#define    DE_READY_LT_MEDIUM_WINK				DST_READY_LT_MEDIUM_WINK
#define    DE_LOGON_LT_MEDIUM_WINK				DST_LOGON_LT_MEDIUM_WINK
#define    DE_WRAPUP_LT_MEDIUM_WINK				DST_WRAPUP_LT_MEDIUM_WINK
#define    DE_RING_LT_MEDIUM_WINK				DST_RING_LT_MEDIUM_WINK
#define    DE_ANSWER_LT_MEDIUM_WINK				DST_ANSWER_LT_MEDIUM_WINK
#define    DE_PROGRAM_LT_SLOW_WINK				DST_PROGRAM_LT_SLOW_WINK
#define    DE_TRANSFER_LT_SLOW_WINK				DST_TRANSFER_LT_SLOW_WINK
#define    DE_CONFERENCE_LT_SLOW_WINK			DST_CONFERENCE_LT_SLOW_WINK
#define    DE_SOFT_LT_MEDIUM_WINK				DST_SOFT_LT_MEDIUM_WINK
#define    DE_MENU_LT_MEDIUM_WINK				DST_MENU_LT_MEDIUM_WINK0x125F
#define    DE_CALLWAITING_LT_MEDIUM_WINK		DST_CALLWAITING_LT_MEDIUM_WINK
#define    DE_REDIAL_LT_MEDIUM_WINK				DST_REDIAL_LT_MEDIUM_WINK
#define    DE_PAGE_LT_MEDIUM_WINK				DST_PAGE_LT_MEDIUM_WINK
#define    DE_FEATURE_LT_MEDIUM_WINK			DST_FEATURE_LT_MEDIUM_WINK
#define    DE_PAGE_LT_WINK						DST_PAGE_LT_WINK
#define    DE_PAGE_LT_SLOW_WINK					DST_PAGE_LT_SLOW_WINK
#define    DE_CALLBACK_LT_ON					DST_CALLBACK_LT_ON
#define    DE_CALLBACK_LT_FLASHING				DST_CALLBACK_LT_FLASHING
#define    DE_CALLBACK_LT_WINK					DST_CALLBACK_LT_WINK
#define    DE_CALLBACK_LT_FASTFLASHING			DST_CALLBACK_LT_FASTFLASHING
#define    DE_ICM_LT_OFF						DST_ICM_LT_OFF
#define    DE_ICM_LT_ON							DST_ICM_LT_ON
#define    DE_ICM_LT_FLASHING					DST_ICM_LT_FLASHING
#define    DE_ICM_LT_WINK						DST_ICM_LT_WINK
#define    DE_ICM_LT_FASTFLASHING				DST_ICM_LT_FASTFLASHING
#define    DE_ICM_BTN_PRS						DST_ICM_BTN_PRS
#define    DE_ICM_BTN_RLS						DST_ICM_BTN_RLS
#define    DE_CISCO_SCCP_CALL_INFO				DST_CISCO_SCCP_CALL_INFO
#define    DE_CALLBACK_LT_OFF					DST_CALLBACK_LT_OFF
#define    DE_CONFERENCE_BTN_PRS				DST_CONF_BTN_PRS
#define    DE_FUNC_LT_FASTFLASHING				DST_LT_FASTFLASHING
#define    DE_FUNC_LT_FLASHING					DST_LT_FLASHING
#define    DE_FUNC_LT_OFF						DST_LT_OFF
#define    DE_FUNC_LT_ON						DST_LT_ON
#define    DE_FUNC_LT_QUICKFLASH				DST_LT_QUICKFLASH
#define    DE_FUNC_LT_VERY_FASTFLASHING			DST_LT_VERY_FASTFLASHING
#define	   DE_DC_BTN_PRS						DST_DC_BTN_PRS
#define    DE_LND_BTN_PRS						DST_LND_BTN_PRS
#define    DE_CHK_BTN_PRS						DST_CHK_BTN_PRS
#define    DE_CALLSTATE_IDLE					DST_CALLSTATE_IDLE
#define    DE_CALLSTATE_DIALING					DST_CALLSTATE_DIALING
#define    DE_CALLSTATE_ALERTING				DST_CALLSTATE_ALERTING
#define    DE_CALLSTATE_FAR_END_RINGBACK		DST_CALLSTATE_FAR_END_RINGBACK
#define    DE_CALLSTATE_TALK					DST_CALLSTATE_TALK
#define    DE_SPEEDDIAL_NUMBER					DST_SPEEDDIAL_NUMBER
#define    DE_CALLSTATE_DIAL_COMPLETED			DST_CALLSTATE_DIAL_COMPLETED
#define    DE_CALLSTATE_BUSY_TONE				DST_CALLSTATE_BUSY_TONE
#define	   DE_CALLSTATE_INUSE					DST_CALLSTATE_INUSE

#define	   DE_SIP_RAW_MSG						0x1400
#define	   DE_SIP_REMOTE_PARTY_ID				0x1401
#define	   DE_ROIP_ANI							0x1402
#define	   DE_ROIP_ADPCMPACK					0x1403

#define    DE_LOGON_COMPLETED					0x1410
#define    DE_LOGOFF_COMPLETED					0x1411

#define    DE_MKEY_BTN_PRS						0x1500
#define    DE_MKEY_BTN_RLS						0x1501
#define    DE_CKEY_BTN_PRS						0x1502
#define    DE_CKEY_BTN_RLS						0x1503

#define	   DE_CALL_IN_PROGRESS					DST_CALL_IN_PROGRESS
#define    DE_CALL_ALERTING						DST_CALL_ALERTING
#define    DE_CALL_CONNECTED					DST_CALL_CONNECTED
#define    DE_CALL_RELEASED						DST_CALL_RELEASED
#define    DE_CALL_SUSPENDED					DST_CALL_SUSPENDED
#define    DE_CALL_RESUMED						DST_CALL_RESUMED
#define    DE_CALL_HELD							DST_CALL_HELD
#define    DE_CALL_RETRIEVED					DST_CALL_RETRIEVED
#define    DE_CALL_ABANDONED					DST_CALL_ABANDONED
#define    DE_CALL_REJECTED						DST_CALL_REJECTED

//-----------------------------------------------------------------------
//call information structure for DST Serials recording card when received 0x70-0x76 D channel events
//-----------------------------------------------------------------------
#define ISDN_CALL_NUMBER_MAXLEN 32
typedef struct tagISDN_CALL_INFO
{
    ULONG               CallRef ;					// call reference, increase
    ULONG               CallSource ;				// call source, incoming or outgoning
    ULONG               Cause ;						// cause
	char CallerNumber[ISDN_CALL_NUMBER_MAXLEN];		// caller number
	char CallerSubAddr[ISDN_CALL_NUMBER_MAXLEN];	// caller sub addr
	char CalledNumber[ISDN_CALL_NUMBER_MAXLEN];		// called number
	char CalledSubAddr[ISDN_CALL_NUMBER_MAXLEN];	// called sub addr
	char ConnectNumber[ISDN_CALL_NUMBER_MAXLEN];	// connect number
	char ConnectSubAddr[ISDN_CALL_NUMBER_MAXLEN];	// connect sub addr
	char RedirectingNumber[ISDN_CALL_NUMBER_MAXLEN];// redirecting number
}ISDN_CALL_INFO, *PISDN_CALL_INFO;

//-----------------------------------------------------------------------
// definition of failure reason of invoking SsmXXXXXX API, which can be retrieved by invoking
// function "SsmGetLastErrCode()"
//-----------------------------------------------------------------------
enum
{
    C_ERROR_INIT_FAILURE			= 0,	// initialization is failed
    C_ERROR_SSMAPI_UNOPENED			= 1,	// API interface of the driver is not open to the application
    C_ERROR_INVALID_APPCH			= 2,	// invalid channel number	
    C_ERROR_UNSUPPORTED_OP			= 3,	// unsupported operation
    C_ERROR_INDEX_UNOPENED			= 4,	// the function of the voice playback via memory is not open to application
    C_ERROR_INVALID_BUSCH			= 5,	// invalid logical number of the CT-Bus channel
    C_ERROR_OP_UNOPENED				= 6,	// the specified operation is not open to the application
    C_ERROR_INVALID_FORMAT			= 7,	// invalid voice CODEC format	
    C_ERROR_INVALID_PARAMETER		= 8,	// invalid parameters	
    C_ERROR_FILEOP_FAILURE			= 9,	// file operation failed
    C_ERROR_MEMORY_FAILURE			= 10,	// memory access failed
    C_ERROR_RESOURCE_USEUP			= 11,	// related resource is exhausted
    C_ERROR_SYSTEM					= 12,	// system error
    C_ERROR_IdleChNotFound			= 13,	// no idle channel is available
    C_ERROR_OP_FAILURE				= 14,	// operation failed
    C_ERROR_INVALID_APPSPYCIC		= 15,	// invalid monitored CIC(Circuit Identification Code) number	
    C_ERROR_FAX_NOFILE				= 16,	// fax file error
    C_ERROR_VCH_INVALID_SCALE		= 17,	// parameter value is out of range
	C_ERROR_DTMF_NOT_SUPPORT		= 18,	// unsupportted way of DTMF sending
	C_ERROR_SLAVER_RES_NOT_MATCH	= 19,	// 
	C_ERROR_ALL_RES_USED			= 20	// the resources of the specified slaver are all on use
};

//-----------------------------------------------------------------------
// definition of failure reason of AutoDial, which can be retrieved by invoking
// function "SsmGetAutoDialFailureReason()"
//-----------------------------------------------------------------------
enum
{
    ATDL_NULL								= 0,	// no outbound call operation
    ATDL_Cancel								= 1,	// AutoDial is cancelled by the application 
    ATDL_WaitDialAnsTimeout					= 2,	// waiting for answer from called party is time out 
    ATDL_WaitRemotePickupTimeout			= 3,	// waiting for off-hook signal from called party time out
    ATDL_PcmSyncLos							= 4,	

    ATDL_Mtp3Unusable						= 10,	// SS7 signaling: signaling is unusable 
    ATDL_RcvSSB								= 11,	// SS7 signaling: receives SSB message from remote PBX 	
    ATDL_RcvSLB								= 12,	// SS7 signaling: receives SLB message from remote PBX
    ATDL_RcvSTB								= 13,	// SS7 signaling: receives STB message from remote PBX
    ATDL_RcvUNN								= 14,	// SS7 signaling: receives UNN message from remote PBX
    ATDL_RcvSEC								= 15,	// SS7 signaling: receives SEC message from remote PBX
    ATDL_RcvCGC								= 16,	// SS7 signaling: receives CGC message from remote PBX
    ATDL_RcvNNC								= 17,	// SS7 signaling: receives NNC message from remote PBX
    ATDL_RcvCFL								= 18,	// SS7 signaling: receives CFL message from remote PBX
    ATDL_RcvLOS								= 19,	// SS7 signaling: receives LOS message from remote PBX
    ATDL_RcvSST								= 20,	// SS7 signaling: receives SST message from remote PBX
    ATDL_RcvACB								= 21,	// SS7 signaling: receives ACB message from remote PBX
    ATDL_RcvDPN								= 22,	// SS7 signaling: receives DPN message from remote PBX
    ATDL_RcvEUM								= 23,	// SS7 signaling: receives EUM message from remote PBX
    ATDL_RcvADI								= 24,	// SS7 signaling: receives ADI message from remote PBX
    ATDL_RcvBLO								= 25,	// SS7 signaling: receives BLO message from remote PBX
    ATDL_DoubleOccupy						= 26,	// SS7 signaling: collision is detected
    ATDL_CircuitReset						= 27,	// SS7 signaling: receives the circuit/group reset signal from remote PBX
    ATDL_BlockedByRemote					= 28,	// SS7 signaling: circuit is blocked by remote PBX	

    ATDL_SS1WaitOccupyAckTimeout			= 40,	// SS1 signaling: waiting for the occupy acknowledge time out 
    ATDL_SS1RcvCAS_HANGUP					= 41,   // SS1 signaling: receives backward clear signal
    ATDL_SS1RcvA4							= 42,	// SS1 signaling: receives the A4 signal (keys congestion) 	
    ATDL_SS1RcvA5							= 43,	// SS1 signaling: receives the A5 signal (unallocated number) 
    ATDL_SS1RcvUndefinedAx					= 44,	// SS1 signaling: receives undefined backward A signal 
    ATDL_SS1RcvUndefinedAxOnTxCallerId		= 45,	// SS1 signaling: when transmitting caller ID, receives undefined A signal
    ATDL_SS1WaitAxTimeout					= 46,	// SS1 signaling: waiting for receiving backward A group signal time out
    ATDL_SS1WaitAxStopTimeout				= 47,	// SS1 signaling: waiting for backward A group signal to be stopped time out
    ATDL_SS1WaitAxTimeoutOnTxCallerId		= 48,	// SS1 signaling: waiting for A signal time out when transmitting callerId
    ATDL_SS1WaitAxStopTimeoutOnTxCallerId	= 49,	// SS1 signaling: waiting for backward A signal to be stopped time out during transmission of callerId
    ATDL_SS1RcvKB2							= 50,	// SS1 signaling: KB2 signal received (subscriber "local busy")	
    ATDL_SS1RcvKB3							= 51,	// SS1 signaling: KB3 received (subscriber "toll busy")	
    ATDL_SS1RcvKB4							= 52,	// SS1 signaling: KB4 received (keys congestion signal)	
    ATDL_SS1RcvKB5							= 53,	// SS1 signaling: KB5 received (unallocated number) 
    ATDL_SS1RcvUndefinedKB					= 54,	// SS1 signaling: receives undefined KB signal 
    ATDL_SS1WaitKBTimeout					= 55,	// SS1 signaling: receiving backward KB signal time out
    ATDL_SS1WaitKBStopTimeout				= 56,	// SS1 signaling: waiting for remote end to stop sending KB signal time out

    ATDL_ISDNNETISBUS						= 60,	// ISDN: network busy (no use any more)	
    ATDL_ISDNEMPTYNO						= 61,	// ISDN: unallocated number

    ATDL_IllegalMessage						= 65,	// SS7 signaling: receives illegal message from remote PBX 
    ATDL_RcvREL								= 66,	// ISUP: receives release message (REL) from remote PBX
    ATDL_RcvCBK								= 67,	// TUP: receives CBK message from remote PBX 
    ATDL_IPInvalidPhonum					= 68,	// IP: invalid dailed number	
    ATDL_IPRemoteBusy						= 69,	// IP: remote end busy	
    ATDL_IPBeenRefused						= 70,	// IP: refused	
    ATDL_IPDnsFail							= 71,	// IP: invalid DNS	
    ATDL_IPCodecUnSupport					= 72,	// IP: unsupported codec type	
    ATDL_IPOutOfResources					= 73,	// IP: out of resources	
    ATDL_IPLocalNetworkErr					= 74,	// IP: local network error
    ATDL_IPRemoteNetworkErr					= 75,	// IP: remote network error	
	ATDL_REFERACCEPT						= 76,
	ATDL_REFERREFUSE						= 77,
	ATDL_IPStunFail			 = 78, //IP:���й�����stunʧ��
};

//-----------------------------------------------------------------------
// definition of progress of AutoDial, which can be retrieved by invoking
// function "SsmChkAutoDial()"
//-----------------------------------------------------------------------
enum
{
    DIAL_STANDBY			= 0,	// channel is idle and AutoDial is not operating
    DIAL_DIALING			= 1,	// sending the called party number
    DIAL_ECHOTONE			= 2,	// ringback
    DIAL_NO_DIALTONE		= 3,	// no dialtone is detected on the line, the AutoDial failed
    DIAL_BUSYTONE			= 4,	// called party is busy and the Autodial failed
    DIAL_ECHO_NOVOICE		= 5,	// there is the ringback tone on the line and then the line keeps silence after AutoDial, the AutoDial finished
    DIAL_NOVOICE			= 6,	// there is no tone signal on the line and the line keeps silence after AutoDial, the AutoDial finished
    DIAL_VOICE				= 7,	// called party goes to off-hook
    DIAL_VOICEF1			= 8,	// called party goes off-hook (The answer signal with F1 frequency is detected) and the AutoDial finished
    DIAL_VOICEF2			= 9,	// called party goes off-hook (The answer signal with F2 frequency is detected) and the AutoDial finished
    DIAL_NOANSWER			= 10,	// called party doesn��t pick up the phone for a specified time interval and the Autodial failed
    DIAL_FAILURE			= 11,	// AutoDial failed
    DIAL_INVALID_PHONUM		= 12,	// called party number is unallocated and the AutoDial failed
	DIAL_SESSION_PROCEEDING	= 13,	// SIP channel on a VoIP board receives 18X messages (except 180)
	DIAL_ISDN_PROGRESS		= 14,	// ISDN channel receives the PROGRESS message from the remote PBX
	DIAL_REFER_ACCEPT		= 15,
	DIAL_REFER_REFUSE		= 16,
	DIAL_STUN_FAILED	= 17, //���й�����stunʧ��
};

//-----------------------------------------------------------------------
// definition of pending reason, which can be retrieved by invoking
// funcion "SsmGetPendingReason()"
//-----------------------------------------------------------------------
enum
{
    ANALOGOUT_NO_DIALTONE				= 0,	// analog trunk channel: no dial tone detected
    ANALOGOUT_BUSYTONE					= 1,	// analog trunk channel: busy tone detected
    ANALOGOUT_ECHO_NOVOICE				= 2,	// analog trunk channel: after the ringback tone detected, the phone line keeps silence
    ANALOGOUT_NOANSWER					= 3,	// analog trunk channel: after the ringback tone detected, the called subscriber doesn't answer during the specified time 
    ANALOGOUT_TALKING_REMOTE_HANGUPED	= 4,	// analog trunk channel: detected remote subscriber hang up while channel in "connected" state
    ANALOGOUT_NOVOICE					= 5,	// analog trunk channel: AutoDial finished but no ringback tone or other voice signals have been detected

    PEND_WaitBckStpMsg					= 10,	// indicates the driver has completed the incoming call progress implementation and is waiting for the application to accept or refuse the incoming call
    SS1IN_BWD_KB5						= 11,	// SS1 signaling channel: waits for the release signal from the calling party
    PEND_RemoteHangupOnTalking			= 12,	// remote end hangs up the phone while talking.
    PEND_AutoDialFailed					= 13,	// Outgoing call failed
    PEND_SsxUnusable					= 14,	// SS7 signaling is unavailable	
    PEND_CircuitReset					= 15,	// generate the event of circuit reset	
    PEND_PcmSyncLos						= 16,	// the basic frame (0 timeslot) synchronization signal of the digital trunk is lost
    SS1OUT_TALKING_REMOTE_HANGUPED		= 20,	// remote end hangs up the phone while talking
    PEND_CalleeHangupOnTalking			= 20,	// remote end hangs up the phone while talking

    SS1OUT_NOANSWER						= 21,	// SS1 signaling channel: called subscriber doesn't answer the call duiring the time specified by the configuration item MaxWaitAutoDialAnswerTime
    SS1OUT_NOBWDACK						= 22,	// SS1 signaling channel: wait for the 'Seizure Ack' signal from the remote PBX time out
    SS1OUT_DIALING_BWD_HANGUP			= 23,	// SS1 signaling channel: remote PBX cancels the call
    SS1OUT_BWD_A5						= 24,	// SS1 signaling channel: receives the A5 signal (unallocated number signal) from the remote PBX
    SS1OUT_BWD_KB5						= 25,	// SS1 signaling channel: receives the KB=5 (unallocated number signal) from the remote PBX
    SS1OUT_BWD_KB2						= 26,	// SS1 signaling channel: receives KB=2(called subscriber 'local busy')from the remote PBX
    SS1OUT_BWD_KB3						= 27,	// SS1 signaling channel: receives KB=3(called subscriber 'toll busy')receives from the remote PBX
    SS1OUT_BWD_A4						= 28,	// SS1 signaling channel: receives A4 signal (keys congestion) from remote PBX
    SS1OUT_BWD_KB4						= 29,	// SS1 signaling channel: receives KB=4 signal (keys congestion) from remote PBX
    SS1OUT_TIMEOUT_BWD_A				= 30,	// SS1 signaling channel: wait for backward group A signals from the remote PBX is time out
    SS1OUT_TIMEOUT_BWD_A_STOP			= 31,	// SS1 signaling channel: wait for the remote PBX to stop sending backward group A signals time out
    SS1OUT_TIMEOUT_BWD_KB				= 32,	// SS1 signaling channel: wait for KB signal from the remote PBX time out
    SS1OUT_TIMEOUT_BWD_KB_STOP			= 33,	// SS1 signaling channel: wait for the remote PBX to stop sending KB signal time out
    SS1OUT_TIMEOUT_CALLERID_BWD_A1		= 34,	// SS1 signaling channel: wait for backward group A signal from the remote PBX time out when sending calling party number to the remote PBX
    SS1OUT_TIMEOUT_CALLERID_BWD_A1_STOP	= 35,	// SS1 signaling channel: wait for remote PBX to stop sending backward group A signals time out and autodial fails when sending calling party number to remote PBX 
    SS1OUT_UNDEFINED_CALLERID_BWD_A		= 36,	// SS1 signaling channel: receive undefined backward group A signal when sending calling party number to remote PBX
    SS1OUT_UNDEFINED_BWD_A				= 37,	// SS1 signaling channel: receive undefined backward group A signal
    SS1OUT_UNDEFINED_BWD_KB				= 38,	// SS1 signaling channel: receive the undefined KB signal 

    ISDN_CALLOVER						= 41,	// call is over and the remote end hangs up at first
    ISDN_WAIT_RELEASE					= 42,	// receives the 'disconnected' message from the remote end and waits for the release of the local end
    ISDN_HANGING						= 43,	// local end hangs up 
    ISDN_RELEASING						= 44,	// call releasing
    ISDN_UNALLOCATED_NUMBER				= 45,	// unallocated number
    ISDN_NETWORK_BUSY					= 46,	// network busy	
    ISDN_CIRCUIT_NOT_AVAILABLE			= 47,	// designated circuit is unavailable

    PEND_CalleeHangupOnWaitRemotePickUp	= 48,	// receives the "disconnected" message from the remote PBX when waiting for the called subscriber to pick up
    ISUP_HardCircuitBlock				= 49,	// receives the hardware blocking message from the remote PBX
    ISUP_RemoteSuspend					= 50,	// timer T6 time out, for more information about the timer T6, refer to the "ISUP Channel State Machine" in chapter 1

    PEND_RcvHGBOrSGB					= 51,	// receives the blocking message from the remote PBX(SGB/HGB)

    ISDN_NO_ANSWER						= 52,	// no answer
    ISDN_CALL_REJ						= 53,	// call rejection
    PEND_RemoteHangupOnRinging			= 54,	// remote PBX cancel the call while channel in ringing state
    ISDN_NO_ROUTE						= 55,	// no route to the destination, the cause may be the mobile phone is not in the service area	
    ISDN_NO_ROUTE_TO_DEST				= 56,	// no route to the destination, the cause may be the mobile phone is power off	

    EM_USER_BUSY						= 57,	// user busy
    EM_CH_ERROR							= 58,	// channel error
    EM_LOCAL_HANGUP						= 59,	// local end hangs up first
    EM_LOCAL_NOANSWER					= 60,	// local end no answer
    EM_REMOTE_HANGUP					= 61,	// remote end hangs up first
    EM_REMOTE_NOANSWER					= 62,	// remote end no answer

    PEND_RemoteHangupOnSuspend			= 63,	// remote end hangs up while channel in suspended state
    PEND_CalleeHangupOnSuspend			= 64,	// called party hangs up while channel in suspended state

    ISDN_NORMAL_UNSPEC					= 65,	// calll is finished normally
	ISDN_USER_ABSENCE					= 66,	// user absent
	ISDN_INVALID_NUMBER_FOEMAT			= 67,	// number format invalid
	ISDN_NO_CIRCUIT_AVAILABLE			= 68,	// no circuit/channel available	
	IP_REMOTE_CRASH						= 69,	// remote crash
	IP_REMOTE_CLOSE						= 70,	// remote close(Bye or Cancel)
	IP_DIAL_TIMEOUT						= 71,	// dial time out
	IP_REMOTE_REJECT					= 72,	// remote rejection
	IP_REFER_SUCCEED					= 73,
	IP_REFER_REFUSE						= 74,
	IP_STUN_FAILED						= 75, 	//stun failed in call
	IP_NOTRCV_ACK                       = 76,   // Not receive ACK
	IP_REDIRECT_FAIL					= 77    // Redirect failed
};

//-----------------------------------------------------------------------
// definition of channel state, which can be retrieved by invoking
// function "SsmGetChState()"
//-----------------------------------------------------------------------
enum
{
    S_CALL_STANDBY					= 0,	// idle
    S_CALL_PICKUPED					= 1,	// off-hook
    S_CALL_RINGING					= 2,	// ringing
    S_CALL_TALKING					= 3,	// talking

    S_CALL_ANALOG_WAITDIALTONE		= 4,	// analog trunk channel: outgoing call, wait for dialing tone
    S_CALL_ANALOG_TXPHONUM			= 5,	// analog trunk channel: outgoing call, dialing
    S_CALL_ANALOG_WAITDIALRESULT	= 6,	// analog trunk channel: outgoing call, wait for dialing result

    S_CALL_PENDING					= 7,	// pending
    S_CALL_OFFLINE					= 8,	// off-line
    S_CALL_WAIT_REMOTE_PICKUP		= 9,	// outgoing call: 'wait answer' or 'wait called subscriber pickup'
    S_CALL_ANALOG_CLEAR				= 10,	// analog trunk channel: internal state 
    S_CALL_UNAVAILABLE				= 11,	// channel unusable
    S_CALL_LOCKED					= 12,	// outgoing call locked

    S_CALL_RemoteBlock				= 19,	// blocked by remote
    S_CALL_LocalBlock				= 20,	// blocked locally

    S_CALL_Ss1InWaitPhoNum			= 30,	// SS1 Channel: receive called subscriber number
    S_CALL_Ss1InWaitFwdStop			= 31,	// SS1 Channel: wait remote PBX to stop sending forward signal
    S_CALL_Ss1InWaitCallerID		= 32,	// SS1 Channel: receive Caller ID
    S_CALL_Ss1InWaitKD				= 33,	// SS1 Channel: receive KD signal
    S_CALL_Ss1InWaitKDStop			= 34,	// SS1 Channel: wait remote PBX to stop sending KD signal
    S_CALL_SS1_SAYIDLE				= 35,	// SS1 Channel: send idle signal to remote PBX
    S_CALL_SS1WaitIdleCAS			= 36,	// SS1 Channel: wait idle signal from remote PBX
    S_CALL_SS1PhoNumHoldup			= 37,	// SS1 Channel: phone number hold-up
    S_CALL_Ss1InWaitStopSendA3p		= 38,	// SS1 Channel: wait remote PBX to stop sending pulse-method based A3 signal

    S_CALL_Ss1OutWaitBwdAck			= 40,	// SS1 Channel: wait remote PBX to answer seizure confirmation signal	
    S_CALL_Ss1OutTxPhoNum			= 41,	// SS1 Channel: send called subscriber number
    S_CALL_Ss1OutWaitAppendPhoNum	= 42,	// SS1 Channel: wait application to append phone number
    S_CALL_Ss1OutTxCallerID			= 43,	// SS1 Channel: send caller ID
    S_CALL_Ss1OutWaitKB				= 44,	// SS1 Channel: wait KB signal which is from remote PBX	
    S_CALL_Ss1OutDetectA3p			= 45,	// SS1 Channel: wait A3 pulse signal which is from remote PBX

    S_FAX_OK						= 1,	// 
    S_FAX_Wait						= S_CALL_STANDBY,	// FAX channel: idle
    S_FAX_ROUND						= 50,	// FAX channel: state transition is in progress
    S_FAX_PhaseA					= 51,	// FAX channel: fax call setup(Phase A)	
    S_FAX_PhaseB					= 52,	// FAX channel: handling before fax message transmission(Phase B) 
    S_FAX_SendDCS					= 53,	// FAX channel: send DCS signal to the receiver during transmission	
    S_FAX_Train						= 54,	// FAX channel: train before fax message transmission
    S_FAX_PhaseC					= 55,	// FAX channel: in fax message transmission(Phase C)	
    S_FAX_PhaseD					= 56,	// FAX channel: handling after fax message transmission(Phase D)
    S_FAX_NextPage					= 57,	// FAX channel: transmit next page
    S_FAX_AllSent					= 58,	// FAX channel: fax message transmission is completed
    S_FAX_PhaseE					= 59,	// FAX channel: fax call is released(Phase E)
    S_FAX_Reset						= 60,	// FAX channel: reset MODEM
    S_FAX_Init						= 61,	// FAX channel: "initialize MODEM
    S_FAX_RcvDCS					= 62,	// FAX channel: receiving fax, "receive DCS signal from sender"
    S_FAX_SendFTT					= 63,	// FAX channel: receiving fax, "send FTT signal indicating training failure"	
    S_FAX_SendCFR					= 64,	// FAX channel: receiving fax, "send CFR signal confirming the request is acceptable"

    S_FAX_SendPPS					= 65,	// FAX channel: fax transmission, successive fax negotiation is undergone in the ECM mode	
    S_FAX_RcvPPR					= 66,	// FAX channel: fax reception of the PPR signal after its transmission of the PPS signal
    S_FAX_RepeatECMPage				= 67,	// FAX channel: fax transmission, fax data are resent in the ECM mode	
    S_FAX_CTC_CTR					= 68,	// FAX channel: positive negotiation is undergone in the ECM mode after 4 times data resending
    S_FAX_SendPPR					= 69,	// FAX channel: the sender is required to resend the fax data in the ECM mode
    S_FAX_EOR_ERR					= 300,	// FAX channel: negative processing is done in the ECM mode after several times fax resending
    S_FAX_RNR_RR					= 301,	// FAX channel: the fax receiver is busy in the ECM mode
    S_FAX_RTN						= 302,	// FAX channel: fax reception-receiving the message denial and retraining
	S_FAX_NextPage_EOM				= 303,
	
	S_FAX_V34_PhaseV8				= 340,
	S_FAX_PhaseV8					= 350,		//T38 V34 V8����
	S_FAX_V34_SEND_DIS				= 351,		//T38 V34 Senddis and RcvDcs
	S_FAX_V34_DATA					= 352,		//T38 V34 CFR Data �׶�
	S_FAX_V34_PhaseD				= 353,		//T38 V34 D�׶�
	S_FAX_V34_SendPPS				= 354,		//T38 V34 Send PPS
	S_FAX_V34_RepeatPage			= 355,		//T38 V34 Repeat Page
	S_FAX_V34_SEND_MCF				= 356,		//T38 V34 Send MCF
	S_FAX_V34_SEND_PPR				= 357,		//T38 V34 Send PPR
	S_FAX_V34_RNR_RR				= 358,		//T38 V34:SendFax-->RcvRNR->Send RR. ReceiveFax->Send RNR
	S_FAX_V34_EOR_ERR				= 359,		//T38 V34 Err
	S_FAX_V34_RCV_DIS				= 340,		//T38 V34 Rcv Dis
	S_FAX_V34_SEND_DCS				= 341,		//T38 V34 Send DCS
	S_FAX_V34_RCV_DCS				= 342,		//T38 V34 Rcv DCS
	S_FAX_V34_CTC_CTR				= 400,		//T38 V34
	S_FAX_V34_PhaseE				= 420,		//T38 V34 Send DCN
		

    S_TUP_WaitPcmReset				= 70,	// TUP channel: wait circuit group to reset
    S_TUP_WaitSAM					= 71,	// TUP channel: wait for subsequent address message of remote PBX
    S_TUP_WaitGSM					= 72,	// TUP channel: wait for GSM message from remote PBX
    S_TUP_WaitCLF					= 73,	// TUP channel: wait for disconnect message from remote PBX
    S_TUP_WaitPrefix				= 74,	// TUP channel: inbound office prefix
    S_TUP_WaitDialAnswer			= 75,	// TUP channel: wait for message from remote PBX
    S_TUP_WaitRLG					= 76,	// TUP channel: wait for release-guard signal from remote PBX
    S_TUP_WaitSetCallerID			= 77,	// TUP channel: wait for the application to set callerID

    S_ISDN_OUT_WAIT_NET_RESPONSE	= 81,	// ISDN channel: wait for network respons
    S_ISDN_OUT_PLS_APPEND_NO		= 82,	// ISDN channel: wait for the application to append the number
    S_ISDN_IN_CHK_CALL_IN			= 83,	// ISDN channel: incoming call is detected
    S_ISDN_IN_RCVING_NO				= 84,	// ISDN channel: number is been receiving
    S_ISDN_IN_WAIT_TALK				= 85,	// ISDN channel: ready for talk
    S_ISDN_OUT_WAIT_ALERT			= 86,	// ISDN channel: wait for the alerting signal from remote end
    S_ISDN_CALL_BEGIN				= 87,	// ISDN channel: originate an outgoing call or detect an incoming call
    S_ISDN_WAIT_HUANGUP				= 88,	// ISDN channel: wait for hangup
    S_ISDN_IN_CALL_PROCEEDING		= 89,	// ISDN channel: call proceeding
		
    S_CALL_SENDRING					= 100,	// Magnetic channel: send ring

    S_SPY_STANDBY					= S_CALL_STANDBY,
    S_SPY_RCVPHONUM					= 105,	
    S_SPY_RINGING					= S_CALL_RINGING,
    S_SPY_TALKING					= S_CALL_TALKING,

    S_SPY_SS1RESET					= 110,	// SS1 channel: reset
    S_SPY_SS1WAITBWDACK				= 111,	// SS1 channel: waiting for the backward acknowledgement
    S_SPY_SS1WAITKB					= 112,	// SS1 channel: waiting for the KB signal

    S_ISUP_WaitSAM					= 120,	// ISUP channel: wait for SAM message from remote PBX
    S_ISUP_WaitRLC					= 121,	// ISUP channel: wait for release complete signal from remote PBX
    S_ISUP_WaitReset				= 122,	// ISUP channel: wait for circuit to reset
    S_ISUP_LocallyBlocked			= 123,	// ISUP channel: locally blocked
    S_ISUP_RemotelyBlocked			= 124,	// ISUP channel: remotely blocked
    S_ISUP_WaitDialAnswer			= 125,	// ISUP channel: wait for message from remote PBX
    S_ISUP_WaitINF					= 126,	// ISUP channel: wait for INF message from remote PBX
    S_ISUP_WaitSetCallerID			= 127,	// ISUP channel: wait for the application to set caller ID

    S_DTRC_ACTIVE					= 128,	// DTR channel: monitored voice channel is in active state
    S_ISUP_Suspend					= 129,	// ISUP channel: suspended

    S_CALL_EM_TXPHONUM				= 130,	// E/M channel: 'dial' or the voice alteration resource is used
    S_CALL_EM_WaitIdleCAS			= 131,	// E/M channel: wait for the idle signal from remote end
    S_CALL_VOIP_DIALING				= 132,	// IP channel: VoIP calling party is dialing
    S_CALL_VOIP_WAIT_CONNECTED		= 133,	// IP channel: VoIP called party picks up the phone and waits for the channel to enter 'talking' state
    S_CALL_VOIP_CHANNEL_UNUSABLE	= 134,	// IP channel: IP channel is unusable now

    S_CALL_DISCONECT				= 135,	// USB connection is disconnected

    S_CALL_SS1WaitFlashEnd			= 136,	// SS1 channel: wait for the end of flash
    S_CALL_FlashEnd					= 137,	// SS1 channel: flash ends"
    S_CALL_SIGNAL_ERROR				= 139,	// DTR channel: frame synchronization normal but signal incomplete
    S_CALL_FRAME_ERROR				= 140,	// DTR channel: frame synchronization abnormal but signal complete
    
    //150-159, reserved for VoIP board
    S_CALL_VOIP_SESSION_PROCEEDING	= 150,	// IP channel: 'In session', it is a state when 183 received
	S_CALL_VOIP_REG_ING				= 151,	// IP channel: registering a SIP channel
	S_CALL_VOIP_REG_FAILED			= 152,	// IP channel: fail to register a SIP channel
	S_CALL_VOIP_CALL_ON_HOLD		= 153,

	//160-169, resoured for VoIP resource board
	S_IP_MEDIA_LOCK					= 160,	// MEDIA channel: locked
	S_IP_MEDIA_OPEN					= 161,	// MEDIA channel: unlocked
	S_SPY_RBSWAITACK				= 162,
	S_SPY_RBSSENDACK				= 163,

	S_IPR_USING						= 170,	// IPR channel: the channel is used
	S_IPR_COMMUNICATING				= 171,	// IPR channel: the channel is in the communicating state

	S_ISUP_WaitCOT					= 172,	//wait COT ��Ϣ
};

enum
{
	S_EX_IDLE,
	S_EX_RECORDING,
	S_EX_PLAYING,
	S_EX_GETTINGDIGITS,
	S_EX_DIALING,
	S_EX_PLAYTONE,
	S_EX_PRERECORDING,
	S_EX_NOTOPEND,
	S_EX_OFFLINE,	//add new item here one by one
	
	MAX_STATUS_SIZE
};

typedef struct tagSTATEEX
{
    int nStateEx;
	DWORD dwBytesProcessed;
	DWORD dwBytesRecorded;
	DWORD dwBytesPlayed;
}STATEEX, *PSTATEEX;


enum
{
    Tup_ANX = 1,	// call: C_TUP_ANU, C_TUP_ANC, C_TUP_ANN
};

//-----------------------------------------------------------------------
// definition of event
//-----------------------------------------------------------------------
enum
{
    E_PROC_Recognize						= 0x0000,	// voice recognition ends	
    E_CHG_ISDNStatus						= 0x0001,	// ISDN: ISDN LAPD layer changes
    E_RCV_Ss7Msu							= 0x0002,	// SS7: a new message (MSU) is received from the SS7 server
    E_CHG_Mtp3State							= 0x0003,	// SS7: SS7 MTP3 layer changes, usually to indicate if some DPC route is usable or not
    E_CHG_FaxChState						= 0x0004,	// FAX channel: channel state changes
    E_CHG_FaxPages							= 0x0005,	// FAX channel: driver finishes receiving or transmitting a page of fax data
    E_PROC_FaxEnd							= 0x0006,	// FAX channel: driver finishes receiving or transmitting all fax data
    E_CHG_PcmLinkStatus						= 0x0007,	// synchronization status of the digital trunk changes
    E_CHG_LineVoltage						= 0x0008,	// voltage on the analog phone line changes
    E_RCV_CAS								= 0x0009,	// SS1 channel: ABCD signaling code from the remote PBX changes
    E_RCV_R2								= 0x000a,	// SS1 channel: R2 signal from the remote PBX is received
    E_PROC_WaitDTMF							= 0x000b,	// the task of WaitDTMF is completed and submitted via the function SsmSetWaitDtmf, SsmSetWaitDtmfEx or SsmSetWaitDtmfExA
    E_CHG_RcvDTMF							= 0x000c,	// DTMF detector: a DTMF digit is received
    E_PROC_SendDTMF							= 0x000d,	// DTMF generator: the task of transmitting DTMF started by the function SsmTxDtmf is completed
    E_PROC_SendFlash						= 0x000e,	// the task of sending the flash signal is completed
    E_PROC_PlayEnd							= 0x000f,	// the task of playing voice ends
    E_PROC_PlayFile							= 0x0010,	// indicates the file playing progress
    E_PROC_PlayFileList						= 0x0011,	// indicates driver has finished playing a file in the file queue
    E_PROC_PlayMem							= 0x0012,	// indicates the voice playing progress in Single Buffer Mode
    E_PROC_RecordEnd						= 0x0013,	// task of recording voice terminates
    E_PROC_RecordFile						= 0x0014,	// indicates the file recording progress
    E_PROC_RecordMem						= 0x0015,	// indicates the memory recording progress
    E_PROC_SendFSK							= 0x0016,	// FSK transmitter finishes sending all data
    E_PROC_RcvFSK							= 0x0017,	// task of RcvFSK ends
    E_CHG_ChState							= 0x0018,	// channel state changes
    E_PROC_AutoDial							= 0x0019,	// task of AutoDial progresses
    E_CHG_RemoteChBlock						= 0x001a,	// TUP/ISUP channel: the operation to block the remote channel is completed
    E_CHG_RemotePCMBlock					= 0x001b,	// TUP/ISUP channel: the operation to block the remote PCM is completed
    E_SYS_ActualPickup						= 0x001c,	// Analog Trunk channel: pickup command has been executed
    E_CHG_RingFlag							= 0x001d,	// Analog Trunk channel/Analog Trunk Recording channel: voltage level of the ringing current changes
    E_CHG_RingCount							= 0x001e,	// Analog Trunk channel: The counter for signal cycles in the ringing current detector changes
    E_CHG_CIDExBuf							= 0x001f,	// extended buffer area that stores the CallerID information in FSK and DTMF: The size of Extended Caller ID Buffer changes
    E_CHG_RxPhoNumBuf						= 0x0020,	// DTMF detector: a new called party number is received
    E_CHG_PolarRvrsCount					= 0x0021,	// Analog Trunk channel: a polarity reversal is detected on the line
    E_SYS_RemotePickup						= 0x0022,	// Analog Trunk channel: enhanced remote pickup detector detects that the called party picks up	
    E_CHG_FlashCount						= 0x0023,	// Station channel or Recording channel: a flash operation is detected on the phone
    E_CHG_HookState							= 0x0024,	// Station channel: a pickup or hangup behavior is detected on the phone
    E_CHG_ToneAnalyze						= 0x0025,	// Tone detector: tone analyzed result changes
    E_OverallEnergy							= 0x0026,	// Tone detector: overall energy on the line changes
    E_CHG_OvrlEnrgLevel						= 0x0027,	// Tone detector: indicates the overall energy
    E_CHG_BusyTone							= 0x0028,	// Tone detector: the call progress tone detector detects the change in number of busy tone cycles
    E_CHG_BusyToneEx						= 0x0029,	// Tone detector: busy tone is detected by back-to-back busy tone detection
    E_CHG_VocFxFlag							= 0x002a,	// Tone detector: voltage level of single tones changes, usually for detecting the fax tone
    E_CHG_ToneValue							= 0x002b,	// Tone detector: tone voltage level changes
    E_CHG_RingEchoToneTime					= 0x002c,	// Tone detector: count of the ringback tone counter changes
    E_CHG_PeakFrq							= 0x002d,	// Tone detector: peak frequency changes
    E_SYS_BargeIn							= 0x002e,	// Barge-in detector: detected result changes
    E_SYS_NoSound							= 0x002f,	// Tone detector: line keeps silent
    E_SYS_TIMEOUT							= 0x0030,	// Global Timer: the timer started by the function SsmStartTimer overflows
    E_CHG_SpyState							= 0x0031,	// DTP series: state of the monitoring circuit changes
    E_CHG_SpyLinkStatus						= 0x0032,	// not use any more
    E_RCV_DTR_AUDIO							= 0x0033,	// not use any more
    E_RCV_DTR_HOOK							= 0x0034,	// not use any more
    E_RCV_DTR_LAMP							= 0x0035,	// not use any more
    E_RCV_DTR_FKEY							= 0x0036,	// not use any more
    E_RCV_DTR_DKEY							= 0x0037,	// not use any more
    E_RCV_DTR_VOX							= 0x0038,	// not use any more
    E_RCV_DTR_DISPLAY						= 0x0039,	// not use any more
    E_RCV_DTR_DIRECTION						= 0x003a,	// not use any more
    E_RCV_DTR_RING							= 0x003b,	// not use any more
    E_CHG_CICRxPhoNumBuf					= 0x003c,	// SS7 Virtual Circuit: new called party numbers are received
    E_CHG_CICState							= 0x003d,	// SS7 Virtual Circuit: circuit state changes
    E_PROC_CICAutoDial						= 0x003e,	// SS7 Virtual Circuit: the task of ShgAutoDial progresses
    E_RCV_Ss7IsupUtuinf						= 0x003f,	// SS7: USR message is received
    E_CHG_Mtp2Status						= 0x0040,	// SS7 signaling link: signaling link state changes
    E_RCV_DSTDChannel						= 0x0041,	// DST Series: D-channel event
    E_RCV_Ss7SpyMsu							= 0X0042,	// SS7: new monitoring messages (MSU) are received from the SS7 server
    E_CHG_ToneDetector						= 0x0043,	// Tone detector: the event to output the detection result in the new mode
    E_CHG_ToneDetectorItem					= 0x0044,	// Tone detector: the event to count the periods of tones in the new mode
    E_RCV_CALLERID							= 0x0045,	// receive caller id
    E_PROC_FaxDcnTag						= 0x0046,	// Fax channel: when the fax reception is successfully completed, judge if the remote fax machine has ever been compelled to stop
    E_CHG_AMD								= 0x0047,	// Tone detector: used to analyze if it is a human or an answer machine that picks up the phone
    E_RCV_Ss7IsupCpg						= 0x0048,	// SS7: CPG message is received
    E_CHG_CbChStatus						= 0x0049,	// Large-capacity Channel Bank: to monitor any change in the connection state of a line between an on-board channel and a channel bank
	E_RCV_SS7Mtp2Msu						= 0x004a,
	//Reserved 0x4b-0x4f
    E_REFER_Status							= 0x0050,	// SsmIpInitiateTransfer: status after call transfer
	E_CHG_SpyHangupInfo						= 0x0051,	// DTP series: monitoring circuit receives the off-hook event
	E_CHG_CallBackRingCount					= 0x0052,	// ringback count
	E_CHG_RcvMF								= 0x0053,
	E_CHG_Pcm32LineState					= 0x0054,
	E_RCV_SPY_CAS							= 0x0055,
	E_CHG_RingEchoToneCnt					= 0x0056,
	E_Ss7_L2ToL3_IND						= 0x0057,
	//Reserved 0x58-0x5f
	E_RCV_IPR_DChannel						= 0x0060,	// IPR series: D-channel event
	E_RCV_IPR_DONGLE_ADDED					= 0x0061,	// IPR series: USB-key detected
	E_RCV_IPR_DONGLE_REMOVED				= 0x0062,	// IPR series: the removal of USB-key detected
	E_RCV_IPR_NIC_LINKED					= 0x0063,	// IPR series: specified network card detected
	E_RCV_IPR_NIC_UNLINKED					= 0x0064,	// IPR series: specified network card not detected
	E_RCV_IPR_AUTH_OVERFLOW					= 0x0065,	// IPR series: authorization overflow	
	E_RCV_IPR_MEDIA_SESSION_STARTED			= 0x0066,	// IPR series: session started 
	E_RCV_IPR_MEDIA_SESSION_STOPED			= 0x0067,	// IPR series: session stopped 
	E_RCV_IPR_AUX_MEDIA_SESSION_STARTED		= 0x0068,	// IPR series: auxiliary session started
	E_RCV_IPR_MEDIA_SESSION_FOWARDING		= 0x0069,	// IPR series: session being forwarded (reserved. not used at present)	
	E_RCV_IPR_MEDIA_SESSION_FOWARD_STOPED	= 0x006a,	// IPR series: session forwarding stopped (reserved. not used at present)
	E_RCV_IPR_STATION_ADDED					= 0x006b,	// IPR series: the entrance of terminal detected
	E_RCV_IPR_STATION_REMOVED				= 0x006c,	// IPR series: the exit of terminal detected	
	E_IPR_LINK_REC_SLAVER_CONNECTED			= 0x006d,	// IPR series: recording slaver connection detected
	E_IPR_LINK_REC_SLAVER_DISCONNECTED		= 0x006e,	// IPR series: recording slaver disconnection detected
	E_IPR_SLAVER_INIT_CB					= 0x006f,	// IPR series: feedback on the recording slaver initialization
	E_IPR_ACTIVE_SESSION_CB					= 0x0070,	// IPR series: feedback on the requirement for the IPRR channel to enable session receiving 
	E_IPR_DEACTIVE_SESSION_CB				= 0x0071,	// IPR series: feedback on the requirement for the IPRR channel to disable session receiving 
	E_IPR_START_REC_CB						= 0x0072,	// IPR series: feedback on the requirement for the IPRR channel to start recording 
	E_IPR_STOP_REC_CB						= 0x0073,	// IPR series: feedback on the requirement for the IPRR channel to stop recording 
	E_IPR_PAUSE_REC_CB						= 0x0074,	// IPR series: feedback on the requirement for the IPRR channel to pause recording 
	E_IPR_RESTART_REC_CB					= 0x0075,	// IPR series: feedback on the requirement for the IPRR channel to restart recording 
	E_IPR_START_SLAVER_CB					= 0x0076,	// IPR series: feedback on the requirement of starting slaver 
	E_IPR_CLOSE_SLAVER_CB					= 0x0077,	// IPR series: feedback on the requirement of closing slaver 
	E_IPR_RCV_DTMF							= 0x0078,	// IPR series: in-band or RFC2833 DTMF detected
	E_IPR_ACTIVE_AND_REC_CB					= 0x0079,	// IPR series: feedback on the requirement for the IPRR channel to enable Session receiving and start recording 
	E_IPR_DEACTIVE_AND_STOPREC_CB			= 0x007a,	// IPR series: feedback on the requirement for the IPRR channel to disable Session receiving and stop recording 
	E_RCV_IPA_DONGLE_ADDED					= 0x007b,	// IPA series: USB-key detected	
	E_RCV_IPA_DONGLE_REMOVED				= 0x007c, 	// IPA series: removal of USB-key detected	
	E_RCV_IPA_APPLICATION_PENDING			= 0x007d,	// IPA series: removal of USB-key detected,application pending	
	E_RCV_IPR_AUX_MEDIA_SESSION_STOPED		= 0x007e,	// IPR series: auxiliary session stoped
   	E_BOARD_ICMP_CHANGE                     = 0x007F,   //  add by jince problem:OS-2341
    E_RCV_IsdnSpyMsu						= 0X0080,	// added by xzw for OS-5112
	E_RCV_DecodeSs7Msu						= 0x0081,	// added by xzw for OS-5038
	E_CHG_RCV_SELCALL						= 0x0082,	// Channel Rcv Selcall Tone
	E_RCV_IsdnL2SpyMsu						= 0X0083,	// added by gaoyong for DS-33733

	E_CHG_AMD_TIME                          = 0x0084,
    E_REG_OPTIONS_RESPONSE                  = 0x0085,   //DS-28518 2014.5.4 jince 
	E_RCV_HMP_DONGLE_ADDED					= 0x0086,	// HMP series: USB-key detected
	E_RCV_HMP_DONGLE_REMOVED				= 0x0087,	// HMP series: the removal of USB-key detected
    E_REG_REQUEST                           = 0x0088,   //ע�������¼� added by xzw for sipserver
	E_REG_REGSTATUS                         = 0x0089,   //ע��״̬����¼� added by xzw for sipserver
	E_RCV_REFER                             = 0x008A,   //����ת���¼� added by xzw for sipserver
	E_REG_NOTIFY_RESPONSE                   = 0x008b,   //NOTIFY��Ӧ
	E_SIPSTACK_REGSTATUS                    = 0x008c,   // Add by jince for OS-9530 ����Э��ջע���¼�
	E_HOLDING_CALL                          = 0x008d,   //holdcall event	
	E_SIP_RESPONSE                          = 0x008e,   //Add by jince for OS-10659 Add 181 event output 2017.8.21
	E_RCV_IPR_IGMP_MESSAGE					= 0x008f,	//IPR(ROIP)receive IGMP message, generate a event if type is 0x11(query)
	E_SYS_Lost_Interrupt					= 0x0090,   //add by xiazeyang for DS-38666
	E_SIPSTACK_PCMSTATE = 0x0091,	//add by laixuebin OS-12080
	E_SIP_SUBSCRIBE                         = 0x0092,   //add by jince for OS-13231 ����SUBSCRIBE  2018.12.3
	E_RecEnergy                             = 0x0093,   //¼������
    MAX_EVENT_SIZE
};

enum
{
    TIMER_ONE,		// one-shot mode: once the timer overflows, it stops automatically
    TIMER_PERIODIC	// periodic mode: every time when the timer overflows, the driver program automatically reloads the initial value wDelay until the application program calls SsmStopTimer
};

// event process mode
enum
{
    NO_EVENT,			// no event mode
    EVENT_POLLING,		// event polling mode
    EVENT_CALLBACK,		// event callback mode
    EVENT_MESSAGE,		// windows message mode
	EVENT_POLLINGA,		// extended event polling mode
	EVENT_CALLBACKA,	// extended event callback mode
};

//out parameter type which indicates progress of file playing
enum
{
    PLAYPERCENT,		// percent played
    PLAYTIME,			// time played
    DATABYTESPLAYED,	// data bytes played
    DATABYTESTOPLAY		// data bytes left to play
};

//out parameter type which indicates progress of memory playing
enum
{
    END_HALF_BUFFER,	// pointer gets across the middle position or the tail part of the recording buffer
    END_BUFFER,			// pointer gets across the tail part of the buffer
    MEM_OFFSET,			// certain time period
    MEM_BYTES,			// certain amount of voice-data bytes
};

//out parameter type which indicates progress of file recording
enum
{
    RECORD_TIME,	// recorded time
    RECORD_BYTES	// recorded data bytes
};

enum
{
	SS7_MTP2_START = 1,
	SS7_MTP2_STOP,
	SS7_MTP2_EMGCY,
	SS7_MTP2_EMGCY_CLRD, //MTP2 Cancel Emergency Request
	SS7_MTP2_RTV_BSNT, //MTP2 BSNT Retrieval Request
	SS7_MTP2_RTVL_REQ //MTP2 Retrieval Request
};

enum
{
	MTP2_MSU_RX_IND =1,
	SS7_MTP2_IN_SVC,
	SS7_MTP2_OUT_SVC,
	SS7_MTP2_REM_PR_OUT,
	SS7_MTP2_REM_PR_OK,
	
	SS7_MTP2_RXD_BSNT, //MTP2 BSNT Indication.
	SS7_MTP2_RTVD_MSG, //MTP2 Retrieved Message Indication.
	SS7_MTP2_RTVL_COMPL, //MTP2 Retrieval Complete Indication.
	SS7_MTP2_RTVL_NOT_POS, //MTP2 Retrieval Failure Indication.
};

#pragma pack(push, 8)
typedef struct  _MESSAGE_INFO
{
    WORD wEventCode;
    int  nReference;
    DWORD dwParam;
}MESSAGE_INFO, *PMESSAGE_INFO;

typedef struct _EVENT_SET_INFO
{
    DWORD	dwWorkMode;
    LPVOID	lpHandlerParam;
    DWORD	dwOutCondition;
    DWORD	dwOutParamVal;
    DWORD	dwUser;
}EVENT_SET_INFO, *PEVENT_SET_INFO;

typedef struct _SSM_EVENT
{
    WORD		wEventCode;		// event code
    int			nReference;		// reference
    DWORD		dwParam;		// event parameter
    DWORD		dwUser;			// user
    DWORD		dwSubReason;	// event sub-reason
    DWORD		dwXtraInfo;		// extra information
    PVOID		pvBuffer;		// pointer to buffer
    DWORD		dwBufferLength;	// length of buffer pointed by pvBuffer
    DWORD		dwDataLength;	// length of data in buffer pointed by pvBuffer
    DWORD		dwEventFlag;	// falgs of the following:
    // bit 0, =1 - App created the event
    //        =0 - SHP_A3.DLL created the event
    // bit 1, Reserved
    // bit 2, =1 - data has been truncated
    //        =0 - data has not been truncated
    DWORD		dwReserved1;	//reserved
    LONGLONG	llReserved2;	//reserved
}SSM_EVENT, *PSSM_EVENT;

typedef struct tagFAX_FILE_SCT
{
    char	szFileName[256];
    int		nStartPage;
    int		nEndPage;
    int		nReserve1;
    int		nReserve2;
}FAX_FILE_SCT, *PFAX_FILE_SCT;


typedef struct _SSM_VERSION
{
    BYTE	ucMajor;
    BYTE	ucMinor;
    WORD	usInternal;
    WORD	usBuild;
    BYTE	ucRelease;
    BYTE	ucFeature;
}SSM_VERSION, *PSSM_VERSION;

//++++start++++added by xzw for OS-5038
struct Ss7Msu
{
   UCHAR ucCallerNumber[50];
   UCHAR ucCalledNumber[50];
   DWORD dwDPC[3];
   DWORD dwOPC[3];
   UCHAR ucOriginalCalledNum[50];
   WORD  wCicPcm;
   WORD	 wCicTs;
};

//++++end++++++added by xzw for OS-5038

#define IPM_SENDRECV			0x0000
#define IPM_RECVONLY			0x0001
#define	IPM_SENDONLY			0x0002

struct MediaParam
{
	int		mode;
	char	localIP[50];
	int		localPort;
	char	remoteIP[50];
	int		remotePort;
	int		sendCodecType;
	int		dtmfpayload;
};
#pragma pack(pop)

typedef enum//4403
{
	ENUMINIT = 0,
		ENUMREGISTERING = 1,
		ENUMREGISTERSUCCESS = 2,
		ENUMREGISTERFAILED=3,
}enRegState;

#define MAX_SIPIP_ADDR_LENGTH 1024
#define MAX_SIPIP_BINDCHNUM 4096
typedef struct tag_RegInfo
{
    int  nRegID;
	enRegState enRegS;
	int  nRetryCount;
	BOOL bIsUpdateReg;
    int	 nExpires;
	int  nOriginalRegID;
	
	int  nTotalBindNum;
	int  sBindChList[MAX_SIPIP_BINDCHNUM];
	char szServerAddress[MAX_SIPIP_ADDR_LENGTH];
	char szOutBoundAddr[MAX_SIPIP_ADDR_LENGTH];
	char szAuthName[MAX_SIPIP_ADDR_LENGTH];
	char szUserName[MAX_SIPIP_ADDR_LENGTH];
	char szPassword[MAX_SIPIP_ADDR_LENGTH];
	char szRealm[MAX_SIPIP_ADDR_LENGTH];
	char szLocalIdentity[MAX_SIPIP_ADDR_LENGTH];
	char szDisplayName[MAX_SIPIP_ADDR_LENGTH];
}RegInfo;
//++++start++++added by xzw for sipserver
typedef struct tag_RegResp
{
    int  nAuth;//��Ȩ������ȡֵ��ΧΪ0��1
	char szPassword[MAX_SIPIP_ADDR_LENGTH];//�û�����
	char szUsername[MAX_SIPIP_ADDR_LENGTH];
}RegResp;

typedef struct tag_Reg_Info
{
    int   nRegIndex;//ע���û�������
	int   nRegState;//ע��״̬��0��ʾע��ʧ�ܣ�1��ʾע��ɹ�
	int   nT0State;//���ڶ�ʱ��T0״̬����
	char  szTelNo[MAX_SIPIP_ADDR_LENGTH];//ע���û���
	char  szClientAddress[MAX_SIPIP_ADDR_LENGTH];//ע��ͻ���IP��ַ
	char  szClientPort[MAX_SIPIP_ADDR_LENGTH];//ע���ն˶˿ں�
	char  szUserID[MAX_SIPIP_ADDR_LENGTH];//��֤�û���
	int   nExpires;
	int   nRegCountForAuthT0;//���ڶ�ʱ��T0����
	int   nRegCountForAuthT1;//���ڶ�ʱ��T1����
	char  szNonce[MAX_SIPIP_ADDR_LENGTH];
	char  szDispalyName[MAX_SIPIP_ADDR_LENGTH];
	int  nAuth;//��Ȩ������ȡֵ��ΧΪ0��1 
	char szPassword[MAX_SIPIP_ADDR_LENGTH];//�û����� 
}Reg_Info;

//++++end++++++added by xzw for sipserver
//-----------------------------------------------------------------------
// definition for ISUP protocol user side, 'nType' value when invoking
// function "SsmSetIsupFlag"
//-----------------------------------------------------------------------
enum
{
    ISUP_CallerParam = 1,					// calling party number parameter
    ISUP_PhoNumParam = 2,					// called party number parameter
    ISUP_PhoNumREL = 3,						// disconnection message including the number redirection information to the remote PBX
	ISUP_IAM_TMR  = 4,						// TMR (Transmission Medium Requirement) parameter in the IAM message
    ISUP_REL_DENY_SetToOther = 100,			
    DefaultIAM_OriginalCalleeParam = 101,	// parameter of the original called party 
	ISUP_PhoNumRELEx = 5,
};


#pragma pack(push, 1)
typedef struct tag_ISUP_RIREL
{
    WORD wRIMsg;
    WORD wRIPhoNumPara;
    WORD wPhoNumLen;
    UCHAR ucRIPhoNum[20];
}ISUP_RIREL, *PISUP_RIREL;

typedef struct tag_ISUP_RIRELEX
{
	UCHAR ucCauseInd;
    WORD wRIMsg;
    WORD wRIPhoNumPara;
    WORD wPhoNumLen;
    UCHAR ucRIPhoNum[20];
}ISUP_RIRELEX, *PISUP_RIRELEX;
#pragma pack(pop)

#pragma pack(1)

typedef struct tagBUS_OP
{
    BOOL  bEnHwOpBus;
    BOOL  bEnHwOpSetLinkFromVlm;

    int   nST;
    int   nTs;
    int   nToBusCh;
    //+++start+++added by xxh for ��Ϸ���, 2003.6.24
    int   nPlayST;
    int   nPlayTs;
    int   nPlayToBusCh;
    //+++end+++added by xxh for ��Ϸ���, 2003.6.24
    int   nSpeakerVlm;
    int   nTotListener;
    //int nListenerCh[MAX_LISTENER];//masked by xxh for �绰�������listener, 2003.6.24
    int *  pnListenerCh; //added by xxh for �绰�������listener, 2003.6.24

    int   nFromSpeaker;

    int   nDefaultSpeakerVlm; //add by wangjiang for 10¥���������������� 2003.7.23

    int   nTotChS; //added by xxb, for SsmClearChBusLink, 2005.02.02
    int *  pnChS;  //added by xxb, for SsmClearChBusLink, 2005.02.02
    int   nBindCh;   //SHV�����ڱ�����Դ�� 4D 2D ���ڴ�����Դ�ļٰ�
    int   nToBusChForVox;  //added by xxh for support shv, 2006.8.30
}BUS_OP, *PBUS_OP;

#pragma pack()


#pragma pack(push, 8)

typedef struct
{
	WORD port;
	unsigned int addr;
} StunAddress4;
typedef enum 
{
	StunTypeUnknown=0,
	StunTypeOpen,
	StunTypeConeNat,
	StunTypeRestrictedNat,
	StunTypePortRestrictedNat,
	StunTypeSymNat,
	StunTypeSymFirewall,
	StunTypeBlocked,
	StunTypeFailure
} NatType;

typedef union tagIPR_Addr
{
	ULONGLONG 	nLLaddr;	//ip address and port, composed as below definition
	
	struct
	{
		union
		{
			struct { unsigned char s_b1,s_b2,s_b3,s_b4; } S_un_b;
			ULONG	S_addr;
		};
		ULONG	usPort;
	};
}IPR_Addr,*pIPR_Addr;

//IPRecorder slaver adress
typedef struct tagIPR_SLAVERADDR
{
	int nRecSlaverID;
	IPR_Addr ipAddr;
	int nThreadPairs;
	int nTotalResources;
	int nUsedResources;
}IPR_SLAVERADDR, *PIPR_SLAVERADDR;

//session infomation
typedef struct IPR_SessionInfo
{
	int nCallRef;				// call reference
	int nStationId;				// station ID of the session
	int nStationId2;			// another station Id of the session
	DWORD dwSessionId;			// session ID
	IPR_Addr PrimaryAddr;		// IP address and port of primary
	int nPrimaryCodec;			// codec of primary
	IPR_Addr SecondaryAddr;		// IP address and port of secondary
	int nSecondaryCodec;		// codec of secondary
	char szpFowardingIp[32];	// auto forwarding IP address of primary, null if no auto forwarding
	char szsFowardingIp[32];	// auto forwarding IP address of secondary, null if no auto forwarding
	int nFowardingPPort;		// auto forwarding port of primary, -1 if no atuo forwarding
	int nFowardingSPort;		// auto forwarding port of secondary, -1 if no atuo forwarding
	int nCh;
}*pIPR_SessionInfo;

#define MAX_NET_ADAPTERS	6

//computer information
typedef struct tagCOMPUTER_INFO
{
	char szOSVersion[128];					// version of OS
	int nCPUNO;								// CPU count
	char szCPUInfo[1000];					// CPU information
	ULONG ulPhysicalMemory;					// physical memory, unit as MB
	ULONG ulHardDisk;						// hard disk space, unit as GB
	int nNetAdapterNO;						// adapter count
	char szMAC[MAX_NET_ADAPTERS][30];		// MAC adress
	char szIPAddr[MAX_NET_ADAPTERS][30];	// IP address
	char szMask[MAX_NET_ADAPTERS][30];		// mask
	char szGateway[MAX_NET_ADAPTERS][30];	// getway
}COMPUTER_INFO, *PCOMPUTER_INFO;

#define IP_IGMP 2  // IGMP Protocol
#define IP_TCP	6  // TCP Protocol
#define IP_UDP	17 // UDP Protocol

typedef struct tagIGMP_QUERY_INFO
{
	UCHAR ucType;
	UCHAR ucMaxRespTime;
	char szSrcIPAddr[30];
	char szMulticastIPAddr[30];
}IGMP_QUERY_INFO,*PIGMP_QUERY_INFO;

//definition of PBX type 
enum
{
	PTL_SIP				= 0,	// Session Initiation Protocol
	PTL_CISCO_SKINNY	= 1,	// Cisco SCCP Protocol
	PTL_AVAYA_H323		= 2,	// Avaya H323 Protocol
	PTL_SHORTEL_MGCP	= 3,	// Shortel MGCP Protocol
	PTL_H323			= 4,	// H323 Protocol
	PTL_PANASONIC_MGCP	= 5,	// Panasonic Protocol
	PTL_TOSHIBA_MEGACO	= 6,	// Toshiba MEGACO Protocol
	PTL_SIEMENS_H323	= 7,	// Siemens H323 Protocol
	PTL_ALCATEL			= 8,	// Alcatel Protocol
	PTL_MITEL			= 9,	// Mitel Protocol
	PTL_LG_NORTEL		= 10,	// LG Nortel
	PTL_SAMSUNG			= 11,	// Samsung Protocol
	PTL_TADICOM_MGCP	= 12,	// Tadicom MGCP Protocol
	PTL_ZENITEL			= 13,	// Zenitel Protocol
	PTL_NORTEL_UNISTIM	= 14,	// Nortel Unistim Protocol
	PTL_MAX
};

#define IPR_MAX_PROXY_LIST 20
#define IPR_MAX_NON_STATION_LIST 25
#define IPR_MAX_ADDTIONAL_PTL_PORT_LIST 20
#define IPR_MAX_H323_PTL_PORT_LIST IPR_MAX_ADDTIONAL_PTL_PORT_LIST
#define IPR_MAX_SIP_PTL_PORT_LIST IPR_MAX_ADDTIONAL_PTL_PORT_LIST


typedef struct
{
    UCHAR           Protocol;	// Protocol type (i.e., MT_TCP or MT_UDP)
    USHORT          Port;		// Port Number
}IPR_MONITOR_ITEM;

typedef struct
{
    IPR_MONITOR_ITEM SCCP;      // CISCO SCCP parameters
}IPR_SCCP_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM H225CS;    
    IPR_MONITOR_ITEM H225RAS;   
    USHORT NonStationListCount;
    ULONG NonStationList [IPR_MAX_NON_STATION_LIST];
    USHORT H225CSAdditionalCount;
    IPR_MONITOR_ITEM H225CS_Additional[IPR_MAX_H323_PTL_PORT_LIST];  // Optional H225 Call Signaling ports.
    USHORT H225RASAdditionalCount;
    IPR_MONITOR_ITEM H225RAS_Additional[IPR_MAX_H323_PTL_PORT_LIST]; // Optional H223 Registration ports.
	BOOL bNAT;
}IPR_H323_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM Transport;  // SIP IP Protocol Type and Port
    ULONG ProxyIPAddress;        // SIP Proxy/ALG/PBX IP Address
    USHORT NonStationListCount;
    ULONG NonStationList [IPR_MAX_NON_STATION_LIST];
    USHORT TransportAdditionalCount;
    IPR_MONITOR_ITEM Transport_Additional[IPR_MAX_SIP_PTL_PORT_LIST];  // Optional SIP IP protocol type and ports.
	DWORD dwSpecial;		//for some special pbx, set value as 1 for sip/aasp protocal by now
	BOOL bMixCSProtocol;	//if call signalling mixed with TCP and UDP
	BOOL bGrouupCallCompatible;
	USHORT ProxyIPAddressAdditionalCount;
	ULONG ProxyIPAddressAdditional[IPR_MAX_PROXY_LIST];
} IPR_SIP_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM CallAgent;     // Shortel MGCP parameters of Call Agent side
	IPR_MONITOR_ITEM Gateway;		// Shortel MGCP parameters of Agent side
}IPR_SHORTEL_MGCP_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM CallAgent;     // Panasonic MGCP parameters of Call Agent side
	IPR_MONITOR_ITEM Gateway;		// Panasonic MGCP parameters of Agent side
}IPR_PANASONIC_MGCP_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM Megaco_H248;      // Toshiba MEGACO H248 parameters
}IPR_TOSHIBA_MEGACO_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM Proprietary;	// Siemens H323 Proprietary Parameters
    IPR_MONITOR_ITEM H225CS;		// Siemens H323 H225CS Parameters
} IPR_SIEMENS_H323_CFGS;

typedef struct  
{
	IPR_MONITOR_ITEM Alcatel;		// Alcatel Parameters
	USHORT AdditionalTransportCount;
    IPR_MONITOR_ITEM Transport_Additional[IPR_MAX_ADDTIONAL_PTL_PORT_LIST];
}IPR_ALCATEL_CFGS;

typedef struct  
{
	IPR_MONITOR_ITEM Mitel;		// Mitel Parameters
}IPR_MITEL_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM LTPS;			// LG Nortel parameters of "Line Terminal Proxy Server"
    IPR_MONITOR_ITEM Phone;			// LG Nortel parameters of IP Phone
    USHORT NonStationListCount;
    ULONG NonStationList[IPR_MAX_NON_STATION_LIST];
}IPR_LG_NORTEL_CFGS;

typedef struct  
{
	IPR_MONITOR_ITEM Samsung;	// Samsung Parameters
}IPR_SAMSUNG_CFGS;

typedef struct
{
    IPR_MONITOR_ITEM CallAgent;     // Tadicom MGCP parameters of Call Agent side
	IPR_MONITOR_ITEM Gateway;		// Tadicom MGCP parameters of Agent side
}IPR_TADICOM_MGCP_CFGS;

typedef struct  
{
	IPR_MONITOR_ITEM Zenitel;	// Zenitel Parameters
}IPR_ZENITEL_CFGS;

typedef struct  
{
	IPR_MONITOR_ITEM NortelUNIStim;	// Nortel UNIStim Parameters
}IPR_NORTEL_UNISTIM_CFGS;

typedef struct
{
    union
    {
		IPR_SCCP_CFGS CISCO;					// CISCO SCCP protocol parameters
		IPR_SIP_CFGS SIP;						// SIP parameters
		IPR_H323_CFGS Avaya_H323;				// Avaya H323 parameters
		IPR_SHORTEL_MGCP_CFGS Shortel_MGCP;		// Shortel MGCP parameters
		IPR_H323_CFGS H323;						// H323 parameters
		IPR_PANASONIC_MGCP_CFGS Panasonic_MGCP;	// Panasonic MGCP parameters
		IPR_TOSHIBA_MEGACO_CFGS Toshiba_MEGACO;	// Toshiba MEGACO parameters
		IPR_SIEMENS_H323_CFGS Siemens_H323;		// Siemens H323 parameters
		IPR_ALCATEL_CFGS ALCATEL;				// Alcatel parameters
		IPR_MITEL_CFGS MITEL;					// Mitel parameters
		IPR_LG_NORTEL_CFGS LG_Nortel;			// LG Nortel parameters
		IPR_SAMSUNG_CFGS SAMSUNG;				// Samsung parameters
		IPR_TADICOM_MGCP_CFGS Tadicom_MGCP;		// Tadicom MGCP parameters
		IPR_ZENITEL_CFGS ZENITEL;				// Zenitel parameters
		IPR_NORTEL_UNISTIM_CFGS Nortel_UNIStim;	// Nortel UNIStim parameters
    };

}IPR_MONITOR_CFGS, *PIPR_MONITOR_CFGS;

#define IPR_MAX_CALL_ID_SIZE 100
#define MAX_LCD_SIZE 512
typedef struct tagStationList
{
	int nStationId;			//Station Id
	UCHAR ucCallCtrlId;		//call control protocol ID
}STATION_LIST,*PSTATION_LIST;

typedef struct _tagSessionList
{
	int nChId;
	DWORD dwSessionId;
}SESSION_LIST,*PSESSION_LIST;

typedef struct tagIPR_ALL_INFO
{
	DWORD dwStationCnt;
	DWORD dwCallCnt;
	DWORD dwSessionCnt;
	PSTATION_LIST		pnStationList;
	int		*pnCallList;
	PSESSION_LIST	pdwSessionList;
}IPR_ALL_INFO,*PIPR_ALL_INFO;

//������Ϣ
typedef struct tagIPR_CALL_INFO
{
    ULONG               CallRef ;				// call reference, increase
    ULONG               CallSource ;			// call source, incoming or outgoning
    ULONG               Cause ;					// cause
	char szCallerId[IPR_MAX_CALL_ID_SIZE];		// caller 
	char szCalledId[IPR_MAX_CALL_ID_SIZE];		// called
	char szReferredBy[IPR_MAX_CALL_ID_SIZE];	// refered by where
	char szReferTo[IPR_MAX_CALL_ID_SIZE];		// refer to where
}IPR_CALL_INFO, *PIPR_CALL_INFO;

//detail call info
typedef struct tagIPR_CALL_INFOEX
{
	int nCallRef;			//call reference 
	int nStationId;			//primary StationId corresponding to call
	int nStationId2;		//secondary StationId corresponding to call(i.e SIP p2p)
	
	unsigned int ulPrimaryIP;
	unsigned int ulSecondaryIP;
	
	unsigned short usPrimaryPort;
	unsigned short usSecondaryPort;
	
    ULONG               CallSource ;			//call source
    ULONG               Cause ;					//reason
	char szCallerId[IPR_MAX_CALL_ID_SIZE];		//caller name
	char szCalledId[IPR_MAX_CALL_ID_SIZE];		//called name
	char szReferredBy[IPR_MAX_CALL_ID_SIZE];	//refered by who
	char szReferTo[IPR_MAX_CALL_ID_SIZE];		//refer to where
	
	char szSrcMAC[6];
	char szDstMAC[6];
}IPR_SIP_CALL_INFOEX, *pIPR_SIP_CALL_INFOEX;

//SIP CALL INFO
typedef struct tagIPR_SIP_CALL_INFO
{
    ULONG               CallRef ;				// call reference, increase
    ULONG               CallSource ;			// call source, incoming or outgoning
    ULONG               Cause ;					// cause
	char szCallerId[IPR_MAX_CALL_ID_SIZE];		// caller 
	char szCalledId[IPR_MAX_CALL_ID_SIZE];		// called
	char szReferredBy[IPR_MAX_CALL_ID_SIZE];	// refered by where
	char szReferTo[IPR_MAX_CALL_ID_SIZE];		// refer to where
	char				*pRawMsg;				//pointer to sip raw message
	DWORD				dwRawMsgLen;			//sip raw message length
	DWORD				dwReserved0;			//Reserved param
	DWORD				dwReserved1;			//Reserved param
	DWORD				dwReserved2;			//Reserved param
	DWORD				dwReserved3;			//Reserved param
	DWORD				dwReserved4;			//Reserved param
	DWORD				dwReserved5;			//Reserved param
	DWORD				dwReserved6;			//Reserved param
	DWORD				dwReserved7;			//Reserved param
}IPR_SIP_CALL_INFO, *PIPR_SIP_CALL_INFO;

#define IPR_CISCO_SCCP_MAX_NAME_SIZE          40
#define IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE 24

//SCCP call information
typedef struct tagIPR_CISCO_SCCP_CALL_INFO
{
	UCHAR   CallingPartyName[IPR_CISCO_SCCP_MAX_NAME_SIZE];							// calling party name
	UCHAR   CallingParty[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];					// calling party number
	UCHAR   CalledPartyName[IPR_CISCO_SCCP_MAX_NAME_SIZE];							// called party name
	UCHAR   CalledParty[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];						// called party number
	ULONG   LineInstance;															// line instance
	ULONG   CallId;																	// call id
	ULONG   CallType;																// call direction
	UCHAR   OrigCalledPartyName[IPR_CISCO_SCCP_MAX_NAME_SIZE];						// original called party name
	UCHAR   OrigCalledParty[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];					// original called party number
	UCHAR   LastRedirectingPartyName[IPR_CISCO_SCCP_MAX_NAME_SIZE];					// last redirecting party name
	UCHAR   LastRedirectingParty[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];			// last redirecting party number
	ULONG   OrigCalledPartyRedirectReason;											// original called party redirectted reason
	ULONG   LastRedirectReason;														// last called party redirectted reason
	UCHAR   CallingPartyVoiceMailbox[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];		// calling party voicemail box
	UCHAR   CalledPartyVoiceMailbox[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];			// called party voicemail box
	UCHAR   OriginalCalledPartyVoiceMailbox[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];	// original called party voicemail box
	UCHAR   LastRedirectVoiceMailbox[IPR_CISCO_SCCP_MAX_DIRECTORY_NUM_SIZE];		// last redirect voicemail box
	ULONG	CallInstance;															// call instance	
}IPR_CISCO_SCCP_CALL_INFO, *PIPR_CISCO_SCCP_CALL_INFO;

#define IPRDEVENT_BUFFER_MAXLEN 512

typedef struct tagIPR_DEVENT
{
    DWORD dwEventCode;
    DWORD dwSubReason;
    DWORD dwXtraInfo;
    UCHAR pucBuffer[IPRDEVENT_BUFFER_MAXLEN];
    DWORD dwDataLength;
}IPR_DEVENT, *PIPR_DEVENT;

typedef struct tagStationInfoEx
{
	int nStationId;
	char szCallName[IPR_MAX_CALL_ID_SIZE];	// extension number or user name
	PDWORD lpReserve;						// reverse
	IPR_Addr CallCtrlAddr;					// call control ip address and port
	USHORT usSecPort;						// another side port, mainly for H323
	UCHAR ucCallCtrlPtl;					// call control protocol
	UCHAR ucTransPtl;						// transport protocol
	UCHAR ucMacAddr[6];						// MAC address
	char szLCDDisplayInfo[MAX_LCD_SIZE];	// LCD display infomation
}StationInfoEx,*PStationInfoEx;

typedef struct tagROIPANIInfo
{
	UCHAR CallType;
	UCHAR CallFormat;
	UCHAR szReserved1[9];
	UCHAR szUnitID[34];
	UCHAR szStatusID[10];
	UCHAR szCallingID[10];
	UCHAR szCallingGroupID[10];
	UCHAR szReserved2[21];
}ROIPANIInfo,*PROIPANIInfo;

typedef struct tagROIPADPCMPackInfo
{
	UCHAR Frequency;
	UCHAR DTMF;
	UCHAR MiscellaneousBits;
}ROIPADPCMPackInfo,*PROIPADPCMPackInfo;

typedef struct registering_message registering_message_t;//added by xzw for sipserver
#define TYPE_MESSAGE_CONTACT 0x0001
#define TYPE_MESSAGE_SDP	 0x0002
#define TYPE_SET_IP_IPADDR       1

#pragma pack(pop)


#endif //SHCTI_CONST

#ifndef WINAPI
#define WINAPI
#endif
#ifndef CALLBACK
#define CALLBACK
#endif

#ifndef SHCTI_CALLBACK
#define SHCTI_CALLBACK
typedef int (WINAPI * RCVREGISTER)(char* SipBuf,int SipSize,char* SipBufResponse);
typedef void (WINAPI *RXDTMFHANDLER)(int ch, char cDtmf, int nDTStatus, PVOID pV);
typedef BOOL (WINAPI *RECORDMEMBLOCKHANDLER)(int ch, int nEndReason, LPBYTE pucBuf, DWORD dwStopOffset, PVOID pV);
typedef BOOL (WINAPI *RECORDMEMBLOCKHANDLERA)(int ch, int nEndReason, LPBYTE pucBuf, LPBYTE pucBufInbound, LPBYTE pucBufOutbound, DWORD dwStopOffset, PVOID pV);
typedef BOOL (WINAPI *PLAYMEMBLOCKHANDLER)(int ch, int nEndReason, LPBYTE pucBuf, DWORD dwStopOffset, PVOID pV);
typedef void (CALLBACK  *LPRECTOMEM)(int ch, LPBYTE lpData, DWORD dwDataLen);
typedef void (CALLBACK  *LPRECTOMEMB)(int ch, LPBYTE lpData, DWORD dwDataLen, PVOID pV);
typedef int (CALLBACK  *LPFNEVENTCALLBACK)(WORD wEvent, int nReference, DWORD dwParam, DWORD dwUser);
typedef int (CALLBACK  *LPFNEVENTCALLBACKA)(PSSM_EVENT pEvent);
typedef BOOL (CALLBACK *LPFNDSTRECRAWDATA)(int nCh, DWORD dwLen, LPBYTE pucdata, WORD wDataDiscardedTimes, WORD wWriteToFileFailedTimes);
typedef BOOL (CALLBACK *LPFNDSTRECBITFLOW)(int nCh, DWORD dwLen, LPBYTE pucdata, WORD wDataDiscardedTimes, WORD wWriteToFileFailedTimes);

#endif

#ifdef __cplusplus
extern "C"
{
#endif

#ifndef TcNo7_EXPORTS
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ INITIALIZATION OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmStartCti(LPCSTR lpSsmCfgFileName, LPCSTR lpIndexCfgFileName);
	int WINAPI SsmStartCtiEx(LPCSTR lpSsmCfgFileName, LPCSTR lpIndexCfgFileName, BOOL bEnable, PEVENT_SET_INFO pEventSet);
	int WINAPI SsmCloseCti();
	int WINAPI SsmHdlcToFile(LPSTR pszFilePath, int sigType, DWORD SerialNumber);
	void WINAPI SsmGetLastErrMsg(LPSTR szErrMsgBuf);
	char *WINAPI SsmGetLastErrMsgA(void);
	int WINAPI SsmGetLastErrCode();
	int WINAPI SsmGetMaxUsableBoard();
	int WINAPI SsmGetMaxCfgBoard();
	int WINAPI SsmGetRxDtmfBufSize();
	int WINAPI SsmGetAccreditId(int nBId);
	int WINAPI SsmGetMaxCh(void);
	int WINAPI SsmGetChType(int ch);
	int WINAPI SsmSetMaxIdxSeg(WORD wMaxIdxSeg);
	int WINAPI SsmLoadIndexData(int nSegNo, LPCSTR pAlias, int nCodec, LPCSTR pVocFile, LONG lStartPos, LONG lLen);
	int WINAPI SsmFreeIndexData(int nSegNo);
	int WINAPI SsmGetTotalIndexSeg();
	int WINAPI SsmPauseCard();
	int WINAPI SsmRestartCard();
	int WINAPI SsmGetAccreditIdEx(int nBId);
	int WINAPI SsmGetBoardName(int nBId, LPSTR lpBoardModel);
	int WINAPI SsmGetBoardModel(int nBId);
	void WINAPI SsmSetDV(BOOL bEnable);
	BOOL WINAPI SsmGetDV(void);
	DWORD WINAPI SsmGetPciSerialNo(int nBId);
	DWORD WINAPI SsmGetIntCount();
	int WINAPI SsmSetListenMode(int nMode);
	int WINAPI SsmStartBoard(int nBId);
	int WINAPI SsmStopBoard(int nBId);
	int WINAPI SsmGetChHdInfo(int ch, int * pnBId, int * pnBCh);
	int WINAPI SsmGetAppChId(int * AppchId, int BrdId, int BrdChId);
	int WINAPI StartTimer(int ch, WORD ClockType);
	DWORD WINAPI ElapseTime(int ch, WORD ClockType);
    int WINAPI SsmSetLogOutput(int nAPIDbg, int nEventStart, int nEventEnd, int nChStart, int nChEnd, DWORD dwReserve);
	int WINAPI SsmSetLogEnable(int nLogType,int nLogEnable,int nLogCreateMode);
	int WINAPI SsmSetLogAttribute(int nLogCreatePeriod,int nLogMaxKeep,int nLogMaxPeriod,LPCSTR pLogFilePath);
	int WINAPI SsmSetLogAttributeA(int nLogPeriodMode, int nLogCreatePeriod,int nLogMaxKeep,int nLogMaxPeriod,LPCSTR pLogFilePath);
	int WINAPI SsmSetApiLogRange(int nChStart, int nChEnd, int nEventStart, int nEventEnd);
	int WINAPI SsmGetLogAttribute(PINT pLogCreatePeriod,PINT pLogMaxKeep,PINT pLogMaxPeriod,LPSTR pLogFilePath);
	int WINAPI SsmGetLogAttributeA(PINT pLogPeriodMode,PINT pLogCreatePeriod,PINT pLogMaxKeep,PINT pLogMaxPeriod,LPSTR pLogFilePath);		
	int WINAPI SsmLoadChIndexData(int ch, int nSegNo, LPCSTR pAlias, int nCodec, LPCSTR pVocFile, LONG lStartPos, LONG lLen);
	int WINAPI SsmFreeChIndexData(int ch, int nSegNo);
	int WINAPI SsmGetDllVersion(PSSM_VERSION pDLLVersion);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PLAY OPERATION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSetPlayVolume(int ch, int nVolume);
	int WINAPI SsmSetDtmfStopPlay(int ch, BOOL bDspf);
	int WINAPI SsmGetDtmfStopPlayFlag(int ch);
	int WINAPI SsmSetBargeinStopPlay(int ch, BOOL bBispf);
	int WINAPI SsmGetBargeinStopPlayFlag(int ch);
	int WINAPI SsmStopPlay(int ch);
	int WINAPI SsmPlayFile(int ch, LPCSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwLen);
	int WINAPI SsmPlayFileW(int ch, LPCWSTR  pszFileName, int nFormat, DWORD dwStartPos, DWORD dwLen);//added by gy for  OS-8353 2016.7.5
	int WINAPI SsmStopPlayFile(int ch);
	int WINAPI SsmStopPlayFileEx(int ch, DWORD dwReserve);
	int WINAPI SsmPausePlay(int ch);
	int WINAPI SsmRestartPlay(int ch);
	int WINAPI SsmFastFwdPlay(int ch);
	int WINAPI SsmFastBwdPlay(int ch);
	int WINAPI SsmSetPlayTime(int ch, DWORD dwTime);
	LONG WINAPI SsmGetPlayedTimeEx(int ch);
	int  WINAPI SsmGetPlayingFileInfo(int ch , int *pnFormat , LONG *pnTotalTime);
	int WINAPI SsmSetPlayPrct(int ch, DWORD dwPercentage);
	LONG WINAPI SsmGetPlayedTime(int ch);
	int WINAPI SsmGetPlayedPercentage(int ch);
	LONG WINAPI SsmGetDataBytesToPlay(int ch);
	int WINAPI SsmCheckPlay(int ch);
	int WINAPI SsmGetPlayType(int ch);
	int WINAPI SsmPlayIndexString(int ch, LPCSTR pszIdxStr);
	int WINAPI SsmPlayIndexList(int ch, WORD wIdxListLen, PWORD pwIdxList);
	int WINAPI SsmStopPlayIndex(int ch);
	int WINAPI SsmClearFileList(int ch);
	int WINAPI SsmAddToFileList(int ch, LPCSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwLen);
	int WINAPI SsmPlayFileList(int ch);
	int WINAPI SsmStopPlayFileList(int ch);
	int WINAPI SsmPlayMem(int ch, int nFormat, LPBYTE pBuf, DWORD dwBufSize, DWORD dwStartOffset, DWORD dwStopOffset);
	int WINAPI SsmGetPlayOffset(int ch, DWORD* pdwPlayOffset);
	int WINAPI SsmSetStopPlayOffset(int ch, DWORD dwStopPlayOffset);
	int WINAPI SsmStopPlayMem(int ch);
	int WINAPI SsmStopPlayMemEx(int ch, DWORD dwReserve);
	int WINAPI SsmClearPlayMemList(void);
	int WINAPI SsmAddToPlayMemList(LPBYTE pBuf, DWORD dwDataLen, int nFormat);
	int WINAPI SsmPlayMemList(int ch, PWORD pMemList, WORD wMemListLen);
	int WINAPI SsmStopPlayMemList(int ch);
	int WINAPI SsmSetDTMFStopPlayCharSet(int ch, LPCSTR lpstrDtmfCharSet);
	int WINAPI SsmGetDTMFStopPlayCharSet(int ch, LPSTR lpstrDtmfCharSet);
	int WINAPI SsmSetHangupStopPlayFlag(int ch, BOOL bHangupStopPlayFlag);
	int WINAPI SsmPlayMemBlock(int ch,
							   int nFormat,
							   LPBYTE pBuf,
							   DWORD dwBufSize,
							   PLAYMEMBLOCKHANDLER OnPlayMemBlockDone,
							   PVOID pV);
	int WINAPI SsmStopPlayMemBlock(int ch);
	LONG WINAPI SsmGetDataBytesPlayed(int ch);
	int WINAPI SsmSetPlayGain(int ch, WORD wGainLevel);
	int WINAPI SsmSetLine0OutTo(BOOL bEnable);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@    RECORD OPERATION   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmRecStereoToFile(LPSTR pszFileName, DWORD ch1, DWORD ch2, int nFormat);
	int WINAPI SsmStopRecStereoToFile(DWORD ch1, DWORD ch2);
	int WINAPI SsmChkStereoToFile(DWORD ch1, DWORD ch2);
	int WINAPI SsmSetRecVolume(int ch, int nVolume);
	int WINAPI SsmGetRecType(int ch);
	int WINAPI SsmGetRecSamplerate(int ch);
	int WINAPI SsmRecToFile(int ch, LPCSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask);
int WINAPI SsmRecToFileW(int ch, LPCWSTR  pszFileName, int nFormat,
                        DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask); //added by gaoyong for OS-8353 2016.6.14
	int WINAPI SsmRecToFileA(int ch, LPCSTR pszFileName, int nFormat,
							 DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
							 LPRECTOMEM pfnRecToMem);
	int WINAPI SsmRecToFileB(int ch, LPCSTR pszFileName, int nFormat,
							 DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
							 LPRECTOMEMB pfnRecToMem, PVOID pV);
	int WINAPI SsmRecToFileEx(int ch, LPCSTR pszFileName, int nFormat,
							  DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
							  BOOL bSaveToFileOnBargin, DWORD dwRollbackTime);

		int WINAPI SsmRecToFileAW(int ch, LPCWSTR pszFileName, int nFormat,
							 DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
							 LPRECTOMEM pfnRecToMem);
	int WINAPI SsmRecToFileBW(int ch, LPCWSTR pszFileName, int nFormat,
							 DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
							 LPRECTOMEMB pfnRecToMem, PVOID pV);
	int WINAPI SsmRecToFileExW(int ch, LPCWSTR pszFileName, int nFormat,
							  DWORD dwStartPos, DWORD dwBytes, DWORD dwTime, int nMask,
							  BOOL bSaveToFileOnBargin, DWORD dwRollbackTime);

	int WINAPI SsmPauseRecToFile(int ch);
	int WINAPI SsmPauseRecToFileEx(int ch, BOOL bInsertSilence);
	int WINAPI SsmRestartRecToFile(int ch);
	LONG WINAPI SsmGetRecTime(int ch);
	LONG WINAPI SsmGetDataBytesToRecord(int ch);
	int WINAPI SsmStopRecToFile(int ch);
	int WINAPI SsmChkRecToFile(int ch);
	int WINAPI SsmRecToMem(int ch, int nFormat, LPBYTE pBuf, DWORD dwBufSize, DWORD dwStartOffset);
	int WINAPI SsmStopRecToMem(int ch);
	LONG WINAPI SsmGetRecOffset(int ch);
	int WINAPI SsmGetRecAGCSwitch(int ch);
	int WINAPI SsmSetRecAGC(int ch, int nAGCSwitch);
	int WINAPI SsmQueryOpRecMixer(int ch);
	int WINAPI SsmSetRecMixer(int ch, BOOL bEnRecMixer, int nMixerVolume);
	int WINAPI SsmGetRecMixerState(int ch, int* pnEnRecMixer, int* pnMixerVolume);
	int WINAPI SsmSetPrerecord(int ch, BOOL bEnable, int nMode, WORD wInsertTime, int nFormat);
	int WINAPI SsmSetTruncateTail(int ch, DWORD dwTime);
	LONG WINAPI SsmGetTruncateTailTime(int ch);
	int WINAPI SsmGetPrerecordState(int ch, int* pnMode, PWORD pwInsertTime, int* pnFormat);
	int WINAPI SsmSetDTMFStopRecCharSet(int ch, LPCSTR lpstrDtmfCharSet);
	int WINAPI SsmGetDTMFStopRecCharSet(int ch, LPSTR lpstrDtmfCharSet);
	int WINAPI SsmSetHangupStopRecFlag(int ch, BOOL bHangupStopRecFlag);
	int WINAPI SsmCheckRecord(int ch);
	int WINAPI SsmRecordMemBlock(int ch, int nFormat, LPBYTE pBuf,
								 DWORD dwBufSize, RECORDMEMBLOCKHANDLER OnRecMemBlockDone, PVOID pV);
	int WINAPI SsmRecordMemBlockA(int ch, LPCSTR pszFileName, int nFormat, LPBYTE pBuf, LPBYTE pBufInbound, LPBYTE pBufOutbound,
							   	DWORD dwBufSize, RECORDMEMBLOCKHANDLERA OnRecMemBlockDoneA, PVOID pV);
	int WINAPI SsmSetRcvRegisterCallBack(RCVREGISTER  RcvRegisterCallBack);
	int WINAPI SsmStopRecordMemBlock(int ch);
	int WINAPI SsmSetNoModuleChBusRec(int ch, int bBusRec);
	int WINAPI SsmDstGetWorkMode(int ch);
	int WINAPI SsmRecRawData(int ch, LPFNDSTRECRAWDATA DSTRecRawData);
	int	WINAPI SsmStopRecRawData(int ch);
	int	WINAPI SsmSetRecRawCtrl0(int ch, WORD wCtrlData);
	int	WINAPI SsmSetRecRawCtrl1(int ch, WORD wCtrlData);
	int WINAPI SsmStartRecBitFlow(int ch, LPFNDSTRECRAWDATA DSTRecBitFlow);
	int WINAPI SsmStopRecBitFlow(int ch);
	int WINAPI SsmSetRecordAndPlayUseAsIp(BOOL bEnable);
	BOOL WINAPI SsmGetRecordAndPlayUseAsIp();
	int WINAPI SsmSetRecStereo(int ch, BOOL bRecStereo);
	
	
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@   RxDTMF OPERATION   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

	int WINAPI SsmStopCurrentWork(int ch,int nType);
	int WINAPI SsmStopChannel(int ch);
	int WINAPI SsmEnableRxDtmf(int ch, BOOL bRun);
	int WINAPI SsmEnableRxMF(int ch, BOOL bRun);
	int WINAPI SsmClearRxDtmfBuf(int ch);
	int WINAPI SsmGetDtmfStr(int ch, LPSTR pszDtmf);
	int WINAPI SsmClearRxMFBuf(int ch);
	int WINAPI SsmGetMFStr(int ch, LPSTR pszDtmf);
	char* WINAPI SsmGetDtmfStrA(int ch);
	int WINAPI SsmGetRxDtmfLen(int ch);
	int WINAPI SsmGet1stDtmf(int ch, char* pcDtmf);
	int WINAPI SsmGet1stDtmfClr(int ch, char* pcDtmf);
	int WINAPI SsmGetLastDtmf(int ch, char* pcDtmf);
	int WINAPI SsmSetWaitDtmf(int ch, WORD wTimeOut, WORD wMaxLen, char cEndChar, BOOL bWithEndChar);
	int WINAPI SsmChkWaitDtmf(int ch, LPSTR pszDtmf);
	int WINAPI SsmCancelWaitDtmf(int ch);
	int WINAPI SsmSetWaitDtmfEx(int ch, WORD wTimeOut, WORD wMaxLen, char cEndChar, BOOL bWithEndChar);
	int WINAPI SsmSetRxDtmfHandler(int ch, RXDTMFHANDLER OnRcvDtmf, PVOID pV);
	int WINAPI SsmSetWaitDtmfExA(int ch, WORD wTimeOut, WORD wMaxLen, char* szEndChar, BOOL bWithEndChar);
	int WINAPI SsmSetWaitDtmfExB(int ch, DWORD wTimeOut, WORD wMaxLen, char* szEndChar, BOOL bWithEndChar);

	int WINAPI SsmGetSelcallToneLen(int ch);
	int WINAPI SsmClearSelcallToneBuf(int ch);
	int WINAPI SsmGetSelcallToneStr(int ch, LPSTR pszBuf);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ TXDTMF OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryTxDtmf(int ch, LPSTR pszDtmf);
	int WINAPI SsmQueryTxFlash(int ch, LPSTR pszDtmf);
	int WINAPI SsmSetTxDtmfPara(int ch, WORD wOnTime, WORD wOffTime);
	int WINAPI SsmGetTxDtmfPara(int ch, PWORD pwOnTime, PWORD pwOffTime);
	int WINAPI SsmTxDtmf(int ch, LPCSTR pszDtmf);
	int WINAPI SsmStopTxDtmf(int ch);
	int WINAPI SsmChkTxDtmf(int ch);
	int WINAPI SsmTxFlash(int ch, WORD time);
	int WINAPI SsmTxFlashEx(int ch, WORD time, int nChState, BOOL bIgnoreDlTn);
	int WINAPI SsmChkTxFlash(int ch);
	int WINAPI SsmSetTxFlashCharTime(int ch, WORD time);
	int WINAPI SsmGetTxFlashCharTime(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ INTER-CH OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSetLocalFlashTime(int nFlashTime);
	int WINAPI SsmSetASDT(int ch, BOOL bEnAutoSendDialTone);
	int WINAPI SsmSetAMDPara(int ch, DWORD AMDTimeA, DWORD AMDTimeB, DWORD AMDTimeC, DWORD AMDTimeD);//Added by gaoyong for OS-5639
	int WINAPI SsmGetASDT(int ch);
	int WINAPI SsmSetASTOD(int ch, BOOL bEnAutoSendDialTone);
	int WINAPI SsmGetASTOD(int ch);
	int WINAPI SsmGetFlashCount(int ch);
	int WINAPI SsmClearFlashCount(int ch);
	int WINAPI SsmGetHookState(int ch);
	int WINAPI SsmStartRing(int ch);
	int WINAPI SsmStopRing(int ch);
	int WINAPI SsmStartRingWithFskCID(int ch, LPSTR pBuf, DWORD dwMaxBit, DWORD dw1stRingOffDelay);
	int WINAPI SsmStartRingWithCIDStr(int ch, LPSTR pBuf, DWORD dwLen, DWORD dw1stRingOffDelay);
	int WINAPI SsmCheckSendRing(int ch, int* pnCnt);
	int WINAPI SsmSetRingPeriod(int ch,WORD wHigh,WORD wLow);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SEND TONE OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryOpSendTone(int ch);
	int WINAPI SsmSendTone(int ch, int nToneType);
	int WINAPI SsmSendToneEx(int ch, DWORD dwOnTime, DWORD dwOffTime);
	int WINAPI SsmStopSendTone(int ch);
	int WINAPI SsmSetTxTonePara(int ch, int nFreq1, int nVolume1, int nFreq2, int nVolume2);
	int WINAPI SsmGetTxTonePara(int ch, int* pnFreq1, int* pnVolume1, int* pnFreq2, int* pnVolume2);
	int WINAPI SsmChkSendTone(int ch, int* pnToneType);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@ TONE ANALYZE OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryOpToneAnalyze(int ch);
	int WINAPI SsmClearToneAnalyzeResult(int ch);
	int WINAPI SsmStartToneAnalyze(int ch);
	int WINAPI SsmCloseToneAnalyze(int ch);
	LONG WINAPI SsmGetOverallEnergy(int ch);
	int WINAPI SsmGetVocFxFlag(int ch, int nSelFx, BOOL bClear);
	int WINAPI SsmGetToneAnalyzeResult(int ch);
	int WINAPI SsmGetBusyToneLen(int ch);
	int WINAPI SsmGetBusyToneCount(int ch);
	int WINAPI SsmGetRingEchoToneTime(int ch);
	int WINAPI SsmGetBusyToneEx(int ch);
	int WINAPI SsmGetAMDResult(int ch);
	int WINAPI SsmClearAMDResult(int ch);
	int WINAPI SsmControlAMD(int ch, BOOL bStart);
	int WINAPI SsmSetTonePara(int ch, WORD wToneFreq1, WORD wToneBW1, WORD wToneFreq2, WORD wToneBW2, DWORD dwIsToneRatio);
	int WINAPI SsmSetIsDialToneDtrTime(int ch, WORD wIsDialToneDtrTime);
	int WINAPI SsmSetBusyTonePeriod(int ch, WORD wBusyTonePeriod);
	int WINAPI SsmSetIsBusyToneDtrCnt(int ch, WORD wIsBusyToneDtrCnt);
	int WINAPI SsmSetRingEchoTonePara(int ch, WORD wRingEchoOnTime, WORD wRingEchoOffTime);
	int WINAPI SsmSetVoiceFxPara(int ch, WORD wSelFx, WORD wFx, WORD wFxBW, DWORD dwIsVocFxRatio, WORD wIsVocFxDtrTime);
	int WINAPI SsmSetVoiceOnDetermineTime(int ch, WORD wIsVocDtrTime);
	int WINAPI SsmSetMinVocDtrEnergy(int ch, DWORD dwMinVocDtrEnergy);
	int WINAPI SsmGetTonePara(int ch, PWORD pwToneFreq1, PWORD pwToneBW1, PWORD pwToneFreq2, PWORD pwToneBW2, PDWORD pdwIsToneRatio);
	int WINAPI SsmGetIsDialToneDtrTime(int ch, PWORD pwIsDialToneDtrTime);
	int WINAPI SsmGetBusyTonePeriod(int ch, PWORD pwBusyTonePeriod);
	int WINAPI SsmGetIsBusyToneDtrCnt(int ch, PWORD pwIsBusyToneDtrCnt);
	int WINAPI SsmGetRingEchoTonePara(int ch, PWORD pwRingEchoOnTime, PWORD pwRingEchoOffTime);
	int WINAPI SsmGetIsNoVocDtrmTime(int ch, PWORD pwIsNoVocDtrmTime);
	int WINAPI SsmGetVoiceFxPara(int ch, WORD wSelFx, PWORD pwFx, PWORD pwFxBW, PDWORD pdwIsVocFxRatio, PWORD pwIsVocFxDtrTime);
	int WINAPI SsmGetVoiceOnDetermineTime(int ch, PWORD pwIsVocDtrTime);
	int WINAPI SsmGetMinVocDtrEnergy(int ch, PDWORD pdwMinVocDtrEnergy);
	int WINAPI SsmQueryOpPeakFrqDetect(int ch);
	int WINAPI SsmSetPeakFrqDetectBW(int ch, WORD nPeakBW);
	int WINAPI SsmGetPeakFrqDetectBW(int ch);
	LONG WINAPI SsmGetPeakFrqEnergy(int ch);
	int WINAPI SsmGetPeakFrq(int ch);
	DWORD WINAPI SsmGetRecPlayEnergy(int ch, DWORD dwMask);
	int WINAPI SsmStart2ndToneAnalyzer(int ch, BOOL bEn);
	int WINAPI SsmGet2ndToneAnalyzerState(int ch);
	int WINAPI SsmSet2ndTonePara(int ch, WORD wToneFreq1, WORD wToneBW1, WORD wToneFreq2, WORD wToneBW2, DWORD dwIsToneRatio);
	int WINAPI SsmGet2ndTonePara(int ch, PWORD pwToneFreq1, PWORD pwToneBW1, PWORD pwToneFreq2, PWORD pwToneBW2, PDWORD pdwIsToneRatio);
	int WINAPI SsmGet2ndToneAnalyzeResult(int ch);
	int WINAPI SsmClear2ndToneAnalyzeResult(int ch);
	int WINAPI SsmGet2ndBusyToneLen(int ch);
	int WINAPI SsmGet2ndBusyToneCount(int ch);
	int WINAPI SsmSet2ndBusyTonePeriod(int ch, WORD wBusyTonePeriod);
	int WINAPI SsmGet2ndBusyTonePeriod(int ch, PWORD pwBusyTonePeriod);
	int WINAPI SsmSet2ndIsBusyToneDtrCnt(int ch, WORD wIsBusyToneDtrCnt);
	int WINAPI SsmGet2ndIsBusyToneDtrCnt(int ch, PWORD pwIsBusyToneDtrCnt);
	int WINAPI SsmSet2ndIsDialToneDtrTime(int ch, WORD wIsDialToneDtrTime);
	int WINAPI SsmGet2ndIsDialToneDtrTime(int ch, PWORD pwIsDialToneDtrTime);
	int WINAPI SsmSet2ndRingEchoTonePara(int ch, WORD wRingEchoOnTime, WORD wRingEchoOffTime);
	int WINAPI SsmGet2ndRingEchoTonePara(int ch, PWORD pwRingEchoOnTime, PWORD pwRingEchoOffTime);
	int WINAPI SsmSetBusyTonePeriodEx(int ch, int nType, WORD wMax, PWORD pwPeriod);
	int WINAPI SsmGetBusyTonePeriodEx(int ch, int nType, PWORD pwPeriod);
	WORD WINAPI SsmGetToneValue(int ch);
	int WINAPI SsmSetToneValue(int ch, WORD value);
	int WINAPI SsmGetOverallEnergyAllCh(int nBeginCh, int nChNum, PDWORD pdwEnergyTable);
	int WINAPI SsmGetDstChSNRofUplink(int ch);
	int WINAPI SsmGetDstChSNRofDownlink(int ch);
	int WINAPI SsmGetDstChVoltageState(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ BARGEIN OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSetNoSoundDtrmTime(int ch, DWORD dwIsNoSoundDtrTime);
	int WINAPI SsmSetIsBargeInDtrmTime(int ch, WORD wIsBargeInDtrmTime);
	int WINAPI SsmSetBargeInSens(int ch, int nBargeInSens);
    int WINAPI SsmSetVoiceEnergyMinValue(int ch, DWORD nVoiceEnergyMinValue);
    DWORD WINAPI SsmGetVoiceEnergyMinValue(int ch);
	LONG WINAPI SsmGetNoSoundTime(int ch);
	LONG WINAPI SsmGetNoSoundDtrmTime(int ch);
	int WINAPI SsmGetIsBargeInDtrmTime(int ch);
	int WINAPI SsmGetBargeInSens(int ch);
	int WINAPI SsmDetectBargeIn(int ch);
	int WINAPI SsmDetectNoSound(int ch);
	int WINAPI SsmSetCalleeHookDetectP(int ch, WORD wMulti, WORD wValidTime);
	int WINAPI SsmGetCalleeHookDetectP(int ch, PWORD pwMulti, PWORD pwValidTime);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ RING DETECT OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryOpRingDetect(int ch);
	int WINAPI SsmGetRingFlag(int ch);
	int WINAPI SsmGetRingCount(int ch);
	int WINAPI SsmGetCallBackRingCount(int ch);
	int WINAPI SsmClearRingCount(int ch);
	int WINAPI SsmChkOpCallerId(int ch);
	int WINAPI SsmGetCallerId(int ch, LPSTR szCallerId);
	char* WINAPI SsmGetCallerIdA(int ch);
	int WINAPI SsmGetCallerIdEx(int ch, LPSTR szCallerIdEx);
	int WINAPI SsmClearCallerId(int ch);
	int WINAPI SsmClearCallerIdEx(int ch);
	int WINAPI SsmGetCallerName(int ch, LPSTR szCallerName);
	int WINAPI SsmGetCallNum(int ch, LPSTR szCallerNum, LPSTR szCalleeNum);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CALL OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmPickup(int ch);
	int WINAPI SsmPickupANX(int ch, int nANX);
	int WINAPI SsmSearchIdleCallOutCh(WORD wSearchMode, DWORD dwPrecedence);
	int WINAPI SsmCheckActualPickup(int ch);
	int WINAPI SsmSetPickupNow(int ch, BOOL bFlag);
	int WINAPI SsmHangup(int ch);
	#define SipMessageHeadersLen 100
	#define SipMessageHeadersNum 50
	#define SipMessageBodyLen    200
	int WINAPI SsmSIPSendRequest(int ch, LPSTR SipMessageType, char SipMessageNewHeaders[SipMessageHeadersNum][SipMessageHeadersLen],int SipMessageNewHeadersNum,LPSTR SipMessageBody);
    int WINAPI SsmSIPSendRequestA(int ch,LPSTR pSipMessageType,char **pSipMessageNewHeaders,int nSipMessageNewHeadersNum,LPSTR pSipMessageBody);
	int WINAPI SsmSipOutCallSendOptions(LPSTR pszSipRemoteIP);
	int WINAPI SsmSipOutCallSendNotify(LPSTR pszFrom,LPSTR pszTo,LPSTR *pszHeader,int nHeaderNum,LPSTR pszBody,int nTransType);
	int WINAPI SsmSipSetTransportProtocol(int nCh,int nTransType);
	int WINAPI SsmSetHangupReason(int ch,int nReason);
	int WINAPI SsmHangupEx(int ch, UCHAR ucCauseVal);
	int WINAPI SsmAutoDial(int ch, LPCSTR szPhoNum);
	int WINAPI SsmAutoDialAgent(int ch, LPCSTR szCallerPhoNum,LPCSTR szCalleePhoNum);//added by xzw for sipserver
	int	WINAPI SsmSipMsgSetHeader(char* h_Name,char* h_Value);
	int	WINAPI SsmSipMsgSetHeaderA(int nCh,char* h_Name,char* h_Value);
	int WINAPI SsmSipSetContactSection(int nCh, char *szContactSection);
	int WINAPI SsmSipSetMultiNetIP(int nCh,char *szSipSetMultiNetIP);
	int	WINAPI SsmSipSetConnectionInforOfSDP(char * pConnectionInfo);
	int	WINAPI SsmSipSetConnectionInforOfSDPEx(int nCh,char * pConnectionInfo);
	int	WINAPI SsmCheckBoardIcmp(int BoardID,char *sDestAddr,BOOL bRunIcmp);
	int WINAPI SsmAutoDialEx(int ch, LPCSTR szPhoNum, WORD wParam);
	int WINAPI SsmAppendPhoNum(int ch, LPCSTR szPhoNum);
	int WINAPI SsmChkAutoDial(int ch);
	int WINAPI SsmGetAutoDialFailureReason(int ch);
	int WINAPI SsmGetBlockReason(int ch);
	int WINAPI SsmGetChState(int ch);
	int WINAPI SsmGetChStateEx(int ch,PSTATEEX pStateEx);
	int WINAPI SsmSetChState(int ch, int nState);
	int WINAPI SsmSetPlayDest(int ch, int nSelDest);
	int WINAPI SsmSetRecBack(int ch, int nRecBack);
	int WINAPI SsmSetAutoCallDirection(int ch, BOOL bEnAutoCall, int nDirection);
	int WINAPI SsmGetAutoCallDirection(int ch, int* pnDirection);
	int WINAPI SsmGetPendingReason(int ch);
	LONG WINAPI SsmGetChStateKeepTime(int ch);
	int WINAPI SsmGetPhoNumStr(int ch, LPSTR pszPhoNum);
	char* WINAPI SsmGetPhoNumStrA(int ch);
	int WINAPI SsmGetPhoNumLen(int ch);
	int WINAPI SsmGet1stPhoNumStr(int ch, LPSTR pszPhoNum);
	char* WINAPI SsmGet1stPhoNumStrA(int ch);
	int WINAPI SsmGet1stPhoNumLen(int ch);
	int WINAPI SsmEnableAutoSendKB(int ch, BOOL bEnable);
	int WINAPI SsmGetAutoSendKBFlag(int ch);
	int WINAPI SsmSetKB(int ch, BYTE btSigKB);
	int WINAPI SsmSetKD(int ch, BYTE btSigKD);
	int WINAPI SsmSetKA(int ch, BYTE btSigKA);
	int WINAPI SsmSetTxCallerId(int ch, LPCSTR pszTxCallerId);
	int WINAPI SsmGetTxCallerId(int ch, LPSTR pszTxCallerId);
	int WINAPI SsmGetKA(int ch);
	int WINAPI SsmGetKB(int ch);
	int WINAPI SsmGetKD(int ch);
	int WINAPI SsmIsHaveCpg(int ch);
	int WINAPI SsmGetCpg(int ch, char* szmsg, int* msglen);
	int WINAPI SsmSetTxOriginalCallerID(int ch, BYTE* pszTxCallerId);
	int WINAPI SsmSetTxRedirectingNum(int ch, BYTE* pszTxRedirectingNum);
	int WINAPI SsmGetPcm32LineState(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@ Following functions for applications using SS7 @@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmBlockLocalCh(int ch);
	int WINAPI SsmUnblockLocalCh(int ch);
	int WINAPI SsmQueryLocalChBlockState(int ch, PDWORD pdwBlockState);
	int WINAPI SsmBlockLocalPCM(int nLocalPcmNo);
	int WINAPI SsmUnblockLocalPCM(int nLocalPcmNo);
	int WINAPI SsmQueryLocalPCMBlockState(int nLocalPcmNo, PDWORD pdwBlockState);
	int WINAPI SsmQueryOpBlockRemoteCh(int ch);
	int WINAPI SsmBlockRemoteCh(int ch);
	int WINAPI SsmUnblockRemoteCh(int ch);
	int WINAPI SsmGetRemoteChBlockStatus(int ch);
	int WINAPI SsmBlockRemotePCM(int nLocalPcmNo, DWORD dwBlockMode);
	int WINAPI SsmUnblockRemotePCM(int nLocalPcmNo, DWORD dwUnblockMode);
	int WINAPI SsmGetRemotePCMBlockStatus(int nLocalPcmNo, DWORD dwBlockMode);
	BOOL WINAPI SsmGetWaitAutoDialAnswerTime(WORD * pwSeconds);
	BOOL WINAPI SsmSetWaitAutoDialAnswerTime(WORD wSeconds);
	int WINAPI SsmSetWaitAutoDialAnswerTimeEx(int ch, int nSeconds);
	int WINAPI SsmStartPickupAnalyze(int ch);
	int WINAPI SsmGetPickup(int ch);
	WORD WINAPI SsmGetReleaseReason(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@ ADAPTIVE FILTER OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryOpEchoCanceller(int ch);
	int WINAPI SsmSetEchoCanceller(int ch, BOOL bRun);
	int WINAPI SsmGetEchoCancellerState(int ch);
	int WINAPI SsmSetEchoCancellerStudy(int ch, BOOL bRun);
	int WINAPI SsmGetEchoCancellerStudyState(int ch);
	int WINAPI SsmGetEchoCancellerRatio(int ch);
	int WINAPI SsmSaveEchoCancellerPara(int ch);
	int WINAPI SsmSetEchoCancelDelaySize(int ch, WORD wSize);
	WORD WINAPI SsmGetEchoCancelDelaySize(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CT-BUS OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmListenTo(int ch1, int ch2);
	int WINAPI SsmListenToEx(int ch1, int nVolume1, int ch2);
	int WINAPI SsmStopListenTo(int ch1, int ch2);
	int WINAPI SsmTalkWith(int ch1, int ch2);
	int WINAPI SsmTalkWithEx(int ch1, int nVlm1, int ch2, int nVlm2);
	int WINAPI SsmStopTalkWith(int ch1, int ch2);
	void WINAPI PlayListen(DWORD dwBId, DWORD ch);
	void WINAPI PlayListenNew(DWORD dwSpeakerCh, DWORD dwMonitorCh);
	void WINAPI StopListen(DWORD dwBId);
	void WINAPI StopListenNew(DWORD dwSpeakerCh);
	int WINAPI SsmLinkFrom(int ch1, int ch2);
	int WINAPI SsmStopLinkFrom(int ch1, int ch2);
	int WINAPI SsmLinkFromEx(int ch1, int nVolume1, int ch2);
	int WINAPI SsmLinkFromAllCh(int ch, int nVolume, int*nListenerTable, int nListenerNum);
	int WINAPI SsmUnLinkFromAllCh(int ch, int*nListenerTable, int nListenerNum);
	int WINAPI SsmLinkToBus(int ch, int ts);
	int WINAPI  SsmUnLinkToBus(int ch, int ts);
	int WINAPI SsmLinkFromBus(int ts, int ch);
	int WINAPI SsmLinkFromBusEx(int ts, int ch, int vlm);
	int WINAPI SsmUnLinkFromBus(int ts, int ch);
	int WINAPI SsmListenToPlay(int ch1, int vlm1, int ch2);
	int WINAPI SsmUnListenToPlay(int ch1, int ch2);
	int WINAPI SsmClearChBusLink(int nCh);
	int WINAPI SsmGetChBusInfo(int ch, PBUS_OP* p);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CONFERENCE OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmCreateConfGroup(int nMaxMember, int nMaxSpeaker, int nMaxSpeaking, int nMaxSilenceTime);
	int WINAPI SsmFreeConfGroup(int nGrpId);
	int WINAPI SsmJoinConfGroup(int nGrpId, int ch, WORD wJoinMode, int nMixerVolume, BOOL bCreateAlways, BOOL bExitGrpAlways);
	int WINAPI SsmExitConfGroup(int ch, BOOL bFreeGrpAlways);
	int WINAPI SsmSetContactInConf(int nGrpID, int chFrom, int chTo, BOOL bFlag);
	int WINAPI SsmGetConfCfgInfo(PWORD pwMaxMember, PWORD pwMaxSpeaker, PWORD pwMaxSpeaking, PWORD pwMaxSilenceTime);
	int WINAPI SsmGetTotalConfGroup();
	int WINAPI SsmGetConfGrpId(int* pnGrpId);
	int WINAPI SsmGetConfGrpCfgInfo(int nGrpId, PWORD pwMaxMember, PWORD pwMaxSpeaker, PWORD pwMaxSpeaking, PWORD pwMaxSilenceTime);
	int WINAPI SsmGetConfGrpInfo(int nGrpId, PWORD pwTotalMember, PWORD pwTotalSpeaker, PWORD pwTotalSpeaking);
	int WINAPI SsmGetConfGrpMmbrId(int nGrpId, int* pnMmbrId);
	int WINAPI SsmGetConfGrpMmbrInfo(int nGrpId, int nMmbrId, int* pnAppCh, PWORD pwJoinMode, PWORD pwIsSpeaking, PDWORD pdwSilenceTime);
	int WINAPI SsmGetConfChInfo(int ch, int * pnGrpId, int * pnMmbrId, PWORD pwJoinMode, PWORD pwIsSpeaking, PDWORD pdwSilenceTime);
	int WINAPI SsmValidateGrpId(int nGrpId);
	int WINAPI SsmSetListenVlmInConf(int ch, int nVlm);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@ DRIVER  Ver. 1.x COMPATIBLE FUNCTIONS  @@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	DWORD WINAPI InitCard(DWORD add1, DWORD add2, DWORD add3, DWORD add4, DWORD add5,
						  DWORD add6, DWORD add7, DWORD add8, DWORD intno);
	void WINAPI ShutCard(void);
	DWORD WINAPI StartRecordFile(DWORD ch, char * fliename);
	void WINAPI StopRecordFile(DWORD ch);
	void WINAPI PauseRecord(DWORD ch);
	void WINAPI RestartRecord(DWORD ch);
	DWORD WINAPI GetRecordTime(DWORD ch);
	DWORD WINAPI StartPlayFile(DWORD ch, char * filename);
	void WINAPI StopPlayFile(DWORD ch);
	DWORD WINAPI CheckPlayingEnd(DWORD ch);
	void WINAPI PausePlay(DWORD ch);
	void WINAPI RestartPlay(DWORD ch);
	void WINAPI FastPlay(DWORD ch);
	void WINAPI BackPlay(DWORD ch);
	DWORD WINAPI GetPlayTime(DWORD ch);
	DWORD WINAPI GetPlayPercent(DWORD ch);
	void WINAPI SetPlayTime(DWORD ch, DWORD time);
	void WINAPI SetPlayPercent(DWORD ch, DWORD percent);
	DWORD WINAPI LoadIndexFile(DWORD segno, LPSTR filename, DWORD startadr, DWORD length);
	void WINAPI FreeIndexMem(DWORD segno);
	void WINAPI PlayIndex(DWORD ch, LPSTR segstring);
	void WINAPI StopIndex(DWORD ch);
	void WINAPI DTMFStop(DWORD ch, DWORD if_stop);
	DWORD WINAPI GetDTMF(DWORD ch);
	DWORD WINAPI GetDTMFStr(DWORD ch, char * buf);
	void WINAPI ClearDTMFBuf(DWORD ch);
	DWORD WINAPI DetectRing(DWORD ch);
	void WINAPI ClearRing(DWORD ch);
	void WINAPI HangUp(DWORD ch);
	void WINAPI PickUp(DWORD ch);
	DWORD WINAPI DetectInter(DWORD ch);
	DWORD WINAPI GetFlash(DWORD ch);
	void WINAPI SetFlashTime(int time);
	DWORD WINAPI ToneCheck(DWORD ch);
	DWORD WINAPI GetBusyLen(DWORD ch);
	void WINAPI DTMFDial(DWORD ch, LPSTR dialstring);
	DWORD WINAPI DTMFDialEnd(DWORD ch);
	void WINAPI Flash(DWORD ch, DWORD time);
	void WINAPI SetPlayVolume(DWORD ch, LONG volume);
	void WINAPI SetRecVolume(DWORD ch, LONG volume);
	DWORD WINAPI GetCallerId(DWORD ch, LPSTR buf);
	void WINAPI SetPickSens(DWORD piont);
	DWORD WINAPI GetPickUp(DWORD ch);
	DWORD WINAPI GetNum(DWORD ch, LPSTR buf, DWORD time, DWORD len, int end_char);
	void WINAPI SetWorkMode(int Mode);
	void WINAPI SetUserCard(DWORD addr1, DWORD addr2, DWORD addr3, DWORD addr4, DWORD addr5, DWORD addr6, DWORD addr7, DWORD addr8);
	void WINAPI SendBusyTone(int ch);
	void WINAPI SendRingEchoTone(int ch);
	void WINAPI SendDialTone(int ch);
	void WINAPI StopSendTone(int ch);
	void WINAPI StartSendRing(int ch);
	void WINAPI StopSendRing(int ch);
	int WINAPI Link2Ch(int ch1, int ch2);
	void WINAPI UnLink2Ch(int ch1, int ch2);
	int WINAPI Link3Ch(int ch1, int ch2, int ch3);
	void WINAPI UnLink3Ch(int ch1, int ch2, int ch3);
	int WINAPI ListenFromCh(int ch1, int ch2);
	void WINAPI StopListenFromCh(int ch1, int ch2);
	void WINAPI SetDelay(DWORD ch, DWORD delay);
	void WINAPI SetLevel(DWORD ch, DWORD level);
	DWORD WINAPI DetectSound(DWORD ch);
	DWORD WINAPI GetFax11(DWORD ch);
	DWORD WINAPI GetFax21(DWORD ch);
	DWORD  WINAPI GetRing(DWORD ch);
	void WINAPI SetDialSpeed(DWORD point);
	void WINAPI GetErrorMsg(char *buf);
	DWORD WINAPI SetMaxSeg(DWORD inmaxsegment);
	void WINAPI PauseCard(void);
	void WINAPI RestartCard(void);
	DWORD WINAPI GetFZCount(DWORD ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ RECORD MODULE OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	DWORD WINAPI GetLevel(DWORD ch);
	void WINAPI SetJudge(DWORD ch, DWORD Judge);
	int WINAPI SsmQueryOpADC(int ch);
	int WINAPI SsmGetLineVoltage(int ch);
	int WINAPI SsmSetDtrmLineVoltage(int ch, WORD wDtrmValtage);
	int WINAPI SsmGetDtrmLineVoltage(int ch);
	DWORD WINAPI DetectPickUp(DWORD ch);
	DWORD WINAPI DetectEmpty(DWORD ch);
	void WINAPI SetSoundJudgeLevel(DWORD ch, DWORD level);
	DWORD WINAPI GetSoundJudgeLevel(DWORD ch);
	int WINAPI SsmQueryOpMicGain(int ch);
	int WINAPI SsmSetMicGain(int ch, int nGain);
	int WINAPI SsmGetMicGain(int ch);
	int WINAPI SsmSetIgnoreLineVoltage(int ch, BOOL bEnable);
	int WINAPI SsmGetIgnoreLineVoltage(int ch);
	int WINAPI SsmGetIsAnalogToRec(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ POWER-AMPLIFIER OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	void WINAPI SetVolume(DWORD dwBoardId, DWORD dwVolume);
	int WINAPI SsmQueryOpPowerAmp(int ch);
	int WINAPI SsmSetPowerAmpVlm(int ch, int nVolume);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ POLAR REVERSE OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryOpPolarRvrs(int ch);
	int WINAPI SsmGetPolarRvrsCount(int ch);
	int WINAPI SsmGetPolarState(int ch);
	int WINAPI SsmSetPolarState(int ch, int nPolar);
	int WINAPI SsmSetUnimoduleState(int ch, int nLink);
	
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SS1 OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryOpSS1(int ch);
	int WINAPI SsmSendCAS(int ch, BYTE btCas);
	int WINAPI SsmGetCAS(int ch);
	int WINAPI SsmSetRxR2Mode(int ch, int nMode, BOOL bEnable);
	int WINAPI SsmGetR2(int ch);
	int WINAPI SsmSendR2(int ch, int nMode, BYTE btR2);
	int WINAPI SsmSendR2Ex(int ch, int nMode, BYTE btR2, DWORD dwKeepTime);
	int WINAPI SsmStopSendR2(int ch);
	int WINAPI SsmGetSendingCAS(int ch);
	int WINAPI SsmGetSendingR2(int ch, int* pnMode, BYTE* pbtR2);
	int WINAPI SsmSetSendCASFlag(int ch, int nCASFlag);
	int WINAPI SsmGetSendCASFlag(int ch, int* pCASFlag);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PCM LINK OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmGetMaxPcm();
	int WINAPI SsmGetPcmInfo(int nPcmNo, int* pnSSxMode, int* pnBoardId, int* pnBoardPcmNo, int* pnUsePcmTS16,
							 PDWORD pdwRcvrMode, PDWORD pdwEnableAutoCall, PDWORD pdwAutoCallDirection);
	int WINAPI SsmSetPcmClockMode(int nPcmNo, int nClockMode);
	int WINAPI SsmSetPcmPowerDown(int nPcmNo, int nPowerMode);
	int WINAPI SsmGetPcmLinkStatus(int nPcmNo, PWORD pwPcmLinkStatus);
	int WINAPI SsmPcmTsToCh(int nLocalPcmNo, int nTs);
	int WINAPI SsmChToPcmTs(int ch, int* pnLocalPcmNo, int* pnTs);
	int WINAPI SsmGetCbChStatus(int ch, PWORD pwCBLinkStatus);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SEND FSK OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSetFskPara(int nFreqBit0, int nFreqBit1, int nBaudrate, int nMdlAmp);
	int WINAPI SsmGetFskPara(int* pnFreqBit0, int* pnFreqBit1, int* pnBaudrate, int* pnMdlAmp);
	int WINAPI SsmTransFskData(unsigned char* pS, int nSrcLen, int nSyncLen, int nSyncOffLen, unsigned char* pD);
	int WINAPI SsmStartSendFSK(int ch, LPSTR pBuf, DWORD dwMaxBit);
	int WINAPI SsmCheckSendFsk(int ch);
	int WINAPI SsmStopSendFsk(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ RECEIVE FSK OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmStartRcvFSK_III(int ch, WORD wTimeOut, WORD wMaxLen, LPBYTE pucMarkCodeBuf, BYTE ucMarkCodeCount);
	int WINAPI SsmStartRcvFSK_II(int ch, WORD wTimeOut, WORD wMaxLen, LPBYTE pucMarkCodeBuf, BYTE ucMarkCodeCount);
	int WINAPI SsmStartRcvFSK(int ch, WORD wTimeOut, WORD wMaxLen, BYTE ucEndCode, WORD wEndCodeCount);
	int WINAPI SsmClearRcvFSKBuf(int ch);
	int WINAPI SsmCheckRcvFSK(int ch);
	int WINAPI SsmGetRcvFSK(int ch, LPBYTE pucBuf);
	int WINAPI SsmStopRcvFSK(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SS7 OPERATION  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSendSs7Msu(WORD wMsuLength, LPBYTE pucMsuBuf);
	int WINAPI SsmGetSs7Msu(LPBYTE* ppucMsuBuf);
	int WINAPI SsmGetSs7Mtp2Msu(int ss7link, LPBYTE pucPara, LPBYTE* ppucMsuBuf);//modified by yuyu, 2009.09.17
	int WINAPI SsmGetDecodeSs7Msu(struct Ss7Msu *pDecodeSs7Msu);//added by xzw for OS-5038
	int WINAPI SsmGetMtp3State();
	int WINAPI SsmGetMtp3StateEx(int nDpcNo);
	int WINAPI SsmGetMtp2Status(int nLinkNum);
	int WINAPI SsmSetISUPCAT(int nch,  BYTE ucCallerCAT);
	int WINAPI SsmGetIsupUPPara(int nBCh, WORD wEventType, LPWORD pwLength, LPBYTE pucContent);
	int WINAPI SsmSetIsupUPPara(int nBCh, WORD wEventType, LPWORD pwLength, LPBYTE pucContent);
	int WINAPI SsmSendIsupMsg(int nBCh, WORD wEventType);
	int WINAPI SsmSetCalleeHoldFlag(int ch, BOOL bFlag);
	int WINAPI SsmGetInboundLinkSet(int nBCh, LPWORD pwLinkSetNo, LPSTR pszOpc, LPSTR pszDpc);
	int WINAPI SsmGetRedirectionInfReason(int ch);
	int WINAPI SsmGetRedirectionInfNum(int ch, LPSTR szRedirectNum);
	int WINAPI SsmSetIsupFlag(int ch, int nType, DWORD dwValue, PVOID pV);
	int WINAPI SsmGetIsupFlag(int ch, int nType, DWORD *pd);
	int WINAPI SsmGetTupFlag(int ch, int nType, DWORD *pd);
	int WINAPI SsmSetIsupParameter(int nBCh, BYTE ucMsgTypeCode, BYTE ucParamTypeCode,
		WORD wLength, LPBYTE pucContent);
	int WINAPI SsmGetIsupParameter(int nBCh, BYTE ucMsgTypeCode, BYTE ucParamTypeCode,
		LPBYTE pucContent, WORD wNumberOfBytesToWrite, LPWORD lpNumberOfBytesWritten);
	int WINAPI SsmSetTupParameter(int nBCh, BYTE ucMsgTypeCode, BYTE ucParamTypeCode,
		WORD wLength, LPBYTE pucContent);
	int WINAPI SsmGetTupParameter(int nBCh, BYTE ucMsgTypeCode, BYTE ucParamTypeCode,
		LPBYTE pucContent, WORD wNumberOfBytesToWrite, LPWORD lpNumberOfBytesWritten);
	BOOL WINAPI SsmIsupGetUsr(int *ch, LPBYTE pucData, LPBYTE ucLen);
	BOOL WINAPI SsmIsupSendUsr(int ch, LPBYTE pucData, BYTE ucLen);
	int WINAPI SsmSendSs7MsuEx(int ch, int nNewStep, WORD wMsuLength, LPBYTE pucMsuBuf);
	int WINAPI SsmSendSs7Mtp2Msu(int ss7link, WORD wMsuLength, LPBYTE pucMsuBuf);
	int WINAPI SsmGetMaxSs7link();
	int WINAPI SsmSs7Mtp2CmdCtrl(int ss7link, int l3_cmd, unsigned char *param, int len);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ FAX OPERATION API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmFaxGetChStateMsg(int ch , LPSTR buf);
	int WINAPI SsmFaxGetPages(int ch);
	int WINAPI SsmFaxStartReceive(int ch, LPCSTR filename);
	int WINAPI SsmFaxStartSend(int ch, LPCSTR filename);
	int WINAPI SsmFaxStop(int ch);
	void WINAPI SsmFaxSetMaxSpeed(int speed);
	int WINAPI SsmFaxSetChSpeed(int ch, int speed);
	int WINAPI SsmFaxCheckEnd(int ch);
	int WINAPI SsmFaxSetID(int ch, LPCSTR myid);
	int WINAPI SsmFaxGetID(int ch, LPSTR myid);
	int WINAPI SsmFaxSetSendMode(int ch, int mode);
	int WINAPI SsmFaxGetRcvBytes(int ch);
	int WINAPI SsmFaxGetSendBytes(int ch);
	int WINAPI SsmFaxAppendSend(int ch, LPCSTR filename);
    int WINAPI SsmFaxSetHangup(int ch, BOOL flag);
	int WINAPI SsmFaxStartSendEx(int ch, LPCSTR  filename, int nStartPage, int nEndPage);
	int WINAPI SsmFaxSendMultiFile(int ch, LPCSTR szFilePath, LPCSTR szFileName);
	int WINAPI SsmFaxSendMultiFileEx(int ch, FAX_FILE_SCT * pV, int nNum);
	int WINAPI SsmFaxGetAllBytes(int ch);
	int WINAPI SsmFaxGetSpeed(int ch);
	int WINAPI SsmFaxGetMode(int ch, int * pnDir, int *pnResMode, int * pnTransMode);
	int WINAPI SsmFaxSetTransMode(int ch, int nMode);
	int WINAPI SsmFaxGetFailReason(int ch);
	int WINAPI SsmFaxGetDcnTag(int ch);
	int WINAPI SsmFaxGetCodeMode(int ch, DWORD * dwReserver);
	int WINAPI SsmFaxSetCodeMode(int ch, int nMode, DWORD dwReserver);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ MODEM OPERATION API  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmEnableCh(int ch);
	int WINAPI SsmDisableCh(int ch);
	int WINAPI SsmResetCh(int ch);
	int WINAPI SsmCheckResetCh(int ch);
	int WINAPI SsmGetLSR(int ch, unsigned char *retu);
	int WINAPI SsmGetMSR(int ch , unsigned char *retu);
	int WINAPI SsmGetRTS(int ch);
	int WINAPI SsmGetCTS(int ch);
	int WINAPI SsmGetOH(int ch);
	int WINAPI SsmDetectCarry(int ch);
	int WINAPI SsmFaxGetChState(int ch , unsigned short *buf);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ SERIAL PORT IO OPERATION API @@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmReadRxBuf(int ch , int nLen, char *lpcRxBuf);
	int WINAPI SsmGetRxBufLen(int ch);
	void WINAPI SsmClearRxBuf(int ch);
	int WINAPI SsmWriteTxBuf(int ch, int nLen, char * lpcTxBuf);
	int WINAPI SsmWriteTxBuf_S(int ch, char *s);
	int WINAPI SsmWriteTxBuf_C(int ch , char buf);
	int WINAPI SsmGetTxBufRemain(int ch);
	int WINAPI SsmGetTxBufLen(int ch);
	void WINAPI SsmClearTxBuf(int ch);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ ISDN API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmISDNSetDialSubAddr(int ch, LPCSTR lpSubAddress);
	int WINAPI SsmISDNSetDialSubAddrEx(int ch, LPBYTE lpSubAddressEx, BYTE ucSubAddressLen);
	int WINAPI SsmISDNSetTxSubAddr(int ch, LPCSTR lpSubAddress);
	int WINAPI SsmISDNSetTxSubAddrEx(int ch, LPBYTE lpSubAddressEx,BYTE ucSubAddressLen);
	int WINAPI SsmISDNGetTxCallerSubAddr(int ch, LPSTR lpSubAddress);
	int WINAPI SsmISDNGetSubAddr(int ch, LPSTR lpSubAddress);
	int WINAPI SsmISDNGetCallerSubAddr(int ch, LPSTR lpSubAddress);
	int WINAPI SsmISDNGetDisplayMsg(int ch, LPSTR lpDispMsg);
	int WINAPI SsmISDNSetHangupRzn(int ch, int nReason);
	int WINAPI SsmISDNGetStatus(int nPcmNo, int *pL3Start,
								int *pL2DStatus, int *pL2D_L3Atom,
								int * pL3_L2DAtom, int *pRef_ind);
    int WINAPI SsmGetUserCallerId(int ch, LPSTR szCallerId);
	int WINAPI SsmISDNSetCallerIdPresent(int ch, BYTE ucPresentation);
	int WINAPI SsmSetNumType(int ch, int nNumClass, int nNumType);
	int WINAPI SsmGetNumType(int ch, int nNumClass, int* pNumType);
	int WINAPI SsmSetCharge(int ch, int ChargeFlag);
    int WINAPI SsmGetUserInfo(int ch, LPBYTE pUUI);
    int WINAPI SsmISDNGetProgressMsg(int ch, LPBYTE pbMsg);
	int WINAPI SsmGetIsdnParameter(int nBCh, UCHAR ucMsgTypeCode, UCHAR ucParamTypeCode,UCHAR ucParamIndex,
		PUCHAR pucContent, WORD wNumberOfBytesToWrite, LPWORD lpNumberOfBytesWritten);
	int WINAPI SsmSetIsdnParameter(int nBCh, UCHAR ucMsgTypeCode, UCHAR ucParamTypeCode,
		PUCHAR pucContent, WORD wNumberOfBytesToWrite);
//++++start++++added by xzw for DS-30118
	int WINAPI SsmSetIsdnParameterA(int nBCh, UCHAR ucMsgTypeCode, PUCHAR pucParamTypeCode,
		PUCHAR pucContent, PUCHAR pucNumberOfBytesToWrite,WORD wNumberOfUnit);
//++++end++++++added by xzw for DS-30118
    int WINAPI SsmSetUserInfo(int ch, PUCHAR pUUI,WORD wLen);
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ ViaVoice recognize OPERATION API @@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmStartRecognize(int ch, int grammarid, int max_time);
	int WINAPI SsmGetResultCount(int ch);
	int WINAPI SsmGetCurSens(int ch);
	int WINAPI SsmGetResult(LPSTR buf, LPSTR index, LPSTR score, int ch);
	int WINAPI SsmGetNResult(int id, LPSTR buf, LPSTR index, LPSTR score, int ch);
	void WINAPI SsmSetSil(int nValue);
	void WINAPI SsmSetRecoSound(int nBeginLen, int nEndLen, int nSoundLen);
	void WINAPI SsmSetRecoTime(int nRecoTime, int nMaxWait);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@ Set Hardware Flags OPERATION API @@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSetFlag(int ch, int nType, LONG lValue);
	int WINAPI SsmGetFlag(int ch, int nType, LONG* plValue);
	int WINAPI SsmDstSetFlag(int ch, int nType, LONG lValue, PVOID pV);
	int WINAPI SsmSetOvrlEnrgLevel(int ch, WORD wOvrlEnrgLevel);
	WORD WINAPI SsmGetOvrlEnrgLevel(int ch);
	int WINAPI SsmSetOvrlEnrgDtrmTime(int ch, WORD wMinTime, WORD wMaxTime);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SPY  API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int  WINAPI SpyGetState(int nCic);
	int  WINAPI SpyGetStateEx(int nCic,PSTATEEX pStateEx);
	DWORD WINAPI SpyGetHangupInfo(int nCic);
	int  WINAPI SpyGetCallerId(int nCic, char *pcCid);
	int  WINAPI SpyGetCalleeId(int nCic, char *pcCid);
    int  WINAPI SpyGetCallerName(int nCic, char *pcCallName);//added by xjw for OS-6997 2015.8.23
	int  WINAPI SpyGetCallerType(int nCic);
	int  WINAPI SpyGetCalleeType(int nCic);
	int  WINAPI SpyGetConId(int nCic,char *pcCid);
	int  WINAPI SpyGetCallInCh(int nCic);
	int  WINAPI SpyGetCallOutCh(int nCic);
	int  WINAPI SpyGetMaxCic();
	int  WINAPI SpyStopRecToFile(int  nCic);
	int  WINAPI SpyRecToFile(int nCic, WORD wDirection,
							 LPSTR pszFileName, int nCodecFormat,
							 DWORD dwStartPos, DWORD dwBytes,
							 DWORD dwTime,  int nMask);
	int  WINAPI SpyRecToFileA(int    nCic,      WORD  wDirection,
		LPSTR  pszFileName, int   nCodecFormat,
		DWORD  dwStartPos, DWORD dwBytes, DWORD dwTime,
		int    nMask, LPRECTOMEM pfnCallbackA);
	int  WINAPI SpyRecToFileB(int    nCic,      WORD  wDirection,
		LPSTR  pszFileName, int   nCodecFormat,
		DWORD  dwStartPos, DWORD dwBytes, DWORD dwTime,
		int    nMask, LPRECTOMEMB pfnCallbackB, PVOID pVoid);
	int  WINAPI SpyGetLinkStatus(int nSpyPcmNo, BYTE ucFlag);
	int WINAPI SpyChToCic(int ch);
	int WINAPI SsmGetSs7SpyMsu(LPBYTE* ppucMsuBuf);
	int  WINAPI SpyRecToMem(int nCic, WORD wDirection, int nFormat, LPBYTE pBuf, DWORD dwBufSize, DWORD dwStartOffset);
	int  WINAPI SpyStopRecToMem(int nCic);
	int  WINAPI SpySetRecVolume(int nCic, WORD wDirection, int nVolume);
	int  WINAPI SpySetRecMixer(int nCic, BOOL bEnRecMixer, int nMixerVolume);
	int WINAPI SpyCicToCh(int nCic,int* pnCh1,int *pnCh2);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ EVENT  API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmSetEvent(WORD wEvent, int nReference, BOOL bEnable, PEVENT_SET_INFO pEventSet);
	int WINAPI SsmGetEventMode(WORD wEvent, int nReference, PWORD pwEnable, PEVENT_SET_INFO pEventSet);
	int WINAPI SsmWaitForEvent(DWORD dwTimeOut, PMESSAGE_INFO pEvent);
	int WINAPI SsmWaitForEventA(DWORD dwTimeOut, PSSM_EVENT pEvent);
	int WINAPI SsmGetEvent(PMESSAGE_INFO pEvent);
	int WINAPI SsmGetEventA(PSSM_EVENT pEvent);
	int WINAPI SsmStartTimer(WORD wDelay, WORD fuEvent);
	int WINAPI SsmStopTimer(int nTimer);
	int WINAPI SsmPutUserEvent(WORD wEventCode,	int nReference,DWORD dwParam);
	int WINAPI SsmPutUserEventA(PSSM_EVENT pEvent);
	int WINAPI SsmGetInterEventType();
	int WINAPI SsmSetInterEventType(int nType);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@   DTR OPERATION   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI DTRGetLCDStr(int ch, LPSTR pszLCDStr);
	int WINAPI DTRSetMixerVolume(int ch, int nGroup, int nDownVolume, int nUpVolume);
	int WINAPI DTRGetMixerVolume(int ch, int nGroup, int* pnDownVolume, int* pnUpVolume);
	int WINAPI DTRClearDKeyStr(int ch);
	char*  WINAPI DTRGetLCDStrA(int ch);
	int WINAPI DTRGetDKeyStr(int ch, LPSTR pszDKeyStr);
	int WINAPI DTRSendRawData2A3(DWORD dwNum, PCHAR szTime, int ch, BYTE ucCmd, WORD wLen, LPBYTE pucData);
	int WINAPI SsmGetIsdnMsu(int nPcmId, LPBYTE pucMsuBuf);
	int WINAPI SsmSendIsdnMsu(int nPcmId, int nMsgLen, LPBYTE pucMsuBuf);
	int WINAPI SsmSendIsdnMsuEx(int nPcmId,int nMsgType, int nMsgLen, PUCHAR pucMsuBuf);//added by xiazeyang for DS-47725,2016.7.7
	int WINAPI SsmGetIsdnMsuEx(int nPcmId,int nMsgType, PUCHAR pucMsuBuf, PWORD wMsgLen);////added by xiazeyang for DS-47725,2016.7.13
	int WINAPI SsmCheckIsdnMsu(int nPcmId);
	int WINAPI SsmGetIsdnL2SpyMsu(int nPcmId, int nBufLen,PUCHAR pucMsuBuf);//Added by gaoyong for DS-33733

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Tcap and Sccp API  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    
	int WINAPI SsmUserSendMessageToTcap(int nLen, LPBYTE pucMsg);
	int WINAPI SsmUserGetTcapDlgMessage(int *pLen, LPBYTE pucDlgInd);
	int WINAPI SsmUserGetTcapCmpMessage(int *pLen, int nCurDlgID, int nMsgStyle, LPBYTE pucCmpInd);
	int WINAPI SsmUserGetLocalMessage(int *pLen, LPBYTE pucMsgInd);
	BYTE* WINAPI SsmUserGetISMState(int nID, LPBYTE pucState);
	BOOL WINAPI SsmStartTcap();
	void WINAPI SsmTcapGetErrorMsg(char temp[100][50]);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@   Query Format   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmQueryPlayFormat(int ch, int nFormat);
	int WINAPI SsmQueryRecFormat(int ch, int nFormat);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@   Board Eeprom OPERATION   @@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmReadBoardEepromShareSection(int nBId, PVOID pV, int nLen);
	int WINAPI SsmWriteBoardEepromShareSection(int nBId, PVOID pV, int nLen);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@ voice-alteration channel API @@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI ShvGetLinkToBus(int iVCh);
	int WINAPI ShvLinkToBus(int iVCh, int iTs);
	int WINAPI ShvUnLinkToBus(int iVCh, int iTs);
	int WINAPI ShvLinkFromBus(int iVCh, int iTs);
	int WINAPI ShvUnLinkFromBus(int iVCh, int iTs);
	int WINAPI ShvSetVoiceEffect(int iVCh, int iValue);
	int WINAPI ShvGetVoiceEffect(int iVCh);
	int WINAPI SsmGetMaxVCh();
	int WINAPI SsmGetMaxFreeVCh();
	int WINAPI SsmBindVCh(int iCh);
	int WINAPI SsmUnBindVCh(int iCh);
	int WINAPI SsmSetVoiceEffect(int iCh, int iValue);
	int WINAPI SsmGetVoiceEffect(int iCh);
	int WINAPI SsmSetVoiceEffectEx(int iCh, int VarType,int VarParamA,int VarParamB,int VarParamC);
	int WINAPI SsmGetVoiceEffectEx(int iCh,int* pVarType,int* pVarParamA,int* pVarParamB,int* pVarParamC);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@   VOIP Board Operation     @@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmIpGetSessionCodecType(int ch);
	int WINAPI SsmIpGetUsingCodecType(int ch);
	int WINAPI SsmIpSetForwardNum(int ch, LPCSTR pszForwardNum);
	int WINAPI SsmIpInitiateTransfer(int ch, LPCSTR pszTransferTo);
    int WINAPI SsmSipSetMsgFieldParameter(int nCh,int nMsgType,DWORD dwParam, LPCSTR h_Name,LPCSTR h_Value);
	int WINAPI SsmSipChTransfer(int ch, int nReferToCh);
	int WINAPI SsmSipChTransferA(int ch);
	int WINAPI SsmIpGetMessageField(int ch, int type, LPSTR szBuffer, int *pSize);
	int WINAPI SsmIpGetMessageFieldA(int ch, LPSTR szType, LPSTR szBuffer, int *pSize);
	int WINAPI SsmIPGetMsgFieldStr(int ch, int nMsgType, LPSTR szParaType, LPSTR szBuf,int nBufSize);
	int WINAPI SsmSipRegister(int nRegMode,int nParam1,int nParam2,LPCSTR szDisplayName, LPCSTR szUserName, LPCSTR szPasswd,LPCSTR szAuthUserName,LPCSTR szRegSrvAddr,LPCSTR szRealm,LPCSTR szOutBoundProxyAddr, int nExpires);
	int WINAPI SsmSipBoardRegister(int nBId, LPCSTR szRegSrvAddr, LPCSTR szUserName, LPCSTR szPasswd, LPCSTR szRealm, int nExpires);
	int WINAPI SsmSipChRegister(int nCh, LPCSTR szRegSrvAddr, LPCSTR szUserName, LPCSTR szPasswd, LPCSTR szRealm, int nExpires);
	int WINAPI SsmSipMultiChRegister(int nChFrom, int nChTo,LPCSTR szRegSrvAddr, LPCSTR szUserName, LPCSTR szPasswd, LPCSTR szRealm, int nExpires);
	int WINAPI SsmSipChEnableRtpStun(int nChFrom, int nChTo, BOOL bRtpStun);
	int WINAPI SsmSipChEnableSrtp(int nChFrom, int nChTo, BOOL bSrtp);
	int WINAPI SsmSipStackRegister(LPCSTR szRegSrvAddr, LPCSTR szOutBoundAddr,LPCSTR szDisplayName,LPCSTR szUserName, LPCSTR szAuthUserName,LPCSTR szPasswd, LPCSTR szRealm, int nExpires);
    int WINAPI SsmSipStackUnRegister(int nRegID);
	int WINAPI SsmSipStackRemoveRegister(int nRegID);
	int WINAPI SsmSipBindChWithRegInfo(int nChID,int nRegID);
	int WINAPI SsmSipUnBindChWithRegInfo(int nChID,int nRegID);
	int WINAPI SsmSipUnBindChWithOutRegInfo(int nChID);
	int WINAPI SsmSipGetRegInfo(int nRegID,RegInfo *pstRegInfo);
	int WINAPI SsmSipSubScribe(int nCh, LPCSTR lpPhoNum);
	int WINAPI SsmIpUpdateSystem(LPCSTR filePath);
	int WINAPI SsmSipGetReferStatus(int ch);
	int WINAPI SsmSipSetTxUserName(int ch, LPCSTR pszUserName);
	int WINAPI SsmSetIpFlag(int ch,int Type,LPCSTR pszBuffer);
	int WINAPI SsmSipGetBoardRegStatus(int nBId,LPSTR pszRegFailInfo);
	int WINAPI SsmSipGetChRegStatus(int nChId,LPSTR pszRegFailInfo);
	int WINAPI SsmLockMediaCh(int ch);
	int WINAPI SsmGetMediaChParam(int ch, struct MediaParam *mParam);
	int WINAPI SsmOpenMediaCh(int ch, struct MediaParam *mParam);
	int WINAPI SsmCloseMediaCh(int ch);
	int WINAPI SsmUnlockMediaCh(int ch);
	int WINAPI SsmCheckMediaChRTPTimeOut(int ch,int nCheckTime);
	int WINAPI SsmUpdateMediaCh (int ch, struct MediaParam *mParam);
	int WINAPI SsmIPGetStunPublicIP(int nBid,WORD nLocalPort,int nStunServerPort,LPSTR pstrStunServer,StunAddress4 *stunServerAdd,int flag);
	int WINAPI SsmIpGetBoardMacAddress(int nBId, LPBYTE pucMacAddrBuff);	
	int WINAPI SsmSipChHold(int ch, BOOL bHold);
	int WINAPI SsmSipChHoldA(int ch);
    int WINAPI SsmSipRegResponse(LPCSTR pszUserName, RegResp *pstRegResp);//added by xzw for sipserver
	int WINAPI SsmSipGetUserInfoByIndex(int nRegIndex,Reg_Info *pstReg_Info);//added by xzw for sipserver
	int WINAPI SsmSipRemoveRegInfo(LPCSTR pszUserName);//DS-39675
	int WINAPI SsmSipStackAddWhiteOrBlackList(char *pszSipMsgIp,int nWhiteOrBlack);
	int WINAPI SsmSipStackRemoveWhiteOrBlackList(char *pszSipMsgIp,int nWhiteOrBlack);
	int WINAPI SsmSipStackSetUserAgent(const char* pszUserAgent);

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Shg  API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI ShgGetCallerId(int nLocPcmNo, int nTs, LPSTR szCallerId);
	char* WINAPI ShgGetCallerIdA(int nLocPcmNo, int nTs);
	int WINAPI ShgClearCallerId(int nLocPcmNo, int nTs);
	int WINAPI ShgPickup(int nLocPcmNo, int nTs);
	int WINAPI ShgHangup(int nLocPcmNo, int nTs);
	int WINAPI ShgSearchIdleCallOutCh(WORD wSearchMode, DWORD dwPrecedence);
	int WINAPI ShgAutoDial(int nLocPcmNo, int nTs, LPSTR szPhoNum);
	int WINAPI ShgAppendPhoNum(int nLocPcmNo, int nTs, LPSTR szPhoNum);
	int WINAPI ShgChkAutoDial(int nLocPcmNo, int nTs);
	int WINAPI ShgGetAutoDialFailureReason(int nLocPcmNo, int nTs);
	int WINAPI ShgQueryLocalChBlockState(int nLocPcmNo, int nTs, PDWORD pdwBlockState);
	int WINAPI ShgBlockLocalCh(int nLocPcmNo, int nTs);
	int WINAPI ShgUnblockLocalCh(int nLocPcmNo, int nTs);
	int WINAPI ShgQueryLocalPCMBlockState(int nLocPcmNo, PDWORD pdwBlockState);
	int WINAPI ShgBlockLocalPCM(int nLocPcmNo);
	int WINAPI ShgUnblockLocalPCM(int nLocPcmNo);
	int WINAPI ShgBlockRemoteCh(int nLocPcmNo, int nTs);
	int WINAPI ShgUnblockRemoteCh(int nLocPcmNo, int nTs);
	int WINAPI ShgGetRemoteChBlockStatus(int nLocPcmNo, int nTs);
	int WINAPI ShgBlockRemotePCM(int nLocPcmNo, DWORD dwBlockMode);
	int WINAPI ShgUnblockRemotePCM(int nLocPcmNo, DWORD dwUnblockMode);
	int WINAPI ShgGetRemotePCMBlockStatus(int nLocPcmNo, DWORD dwBlockMode);
	int WINAPI ShgGetChState(int nLocPcmNo, int nTs);
	LONG WINAPI ShgGetChStateKeepTime(int nLocPcmNo, int nTs);
	int WINAPI ShgGetPendingReason(int nLocPcmNo, int nTs);
	int WINAPI ShgGetPhoNumLen(int nLocPcmNo, int nTs);
	int WINAPI ShgGetPhoNumStr(int nLocPcmNo, int nTs, LPSTR pszPhoNum);
	char* WINAPI ShgGetPhoNumStrA(int nLocPcmNo, int nTs);
	int WINAPI ShgGet1stPhoNumLen(int nLocPcmNo, int nTs);
	int WINAPI ShgGet1stPhoNumStr(int nLocPcmNo, int nTs, LPSTR pszPhoNum);
	char *WINAPI ShgGet1stPhoNumStrA(int nLocPcmNo, int nTs);
	int WINAPI ShgEnableAutoSendKB(int nLocPcmNo, int nTs, BOOL bEnable);
	int WINAPI ShgGetAutoSendKBFlag(int nLocPcmNo, int nTs);
	int WINAPI ShgSetKB(int nLocPcmNo, int nTs, BYTE btSigKB);
	int WINAPI ShgSetTxCallerId(int nLocPcmNo, int nTs, LPSTR pszTxCallerId);
	int WINAPI ShgGetTxCallerId(int nLocPcmNo, int nTs, LPSTR pszTxCallerId);
	int WINAPI ShgGetKB(int nLocPcmNo, int nTs);
	int WINAPI ShgSetISUPCAT(int nLocPcmNo, int nTs,  BYTE ucCallerCAT);
	int WINAPI ShgHangupEx(int nLocPcmNo, int nTs, BYTE ucCauseVal);

	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SynIPR API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI SsmIPRStartRecSlaver(int nBId, int nRecSlaverId, int* nTotalResources, int* nThreadPairs);
	//IPRecorder Analyzer API:
	int WINAPI SsmIPRAddProtocol(int nBId,int nPtlId, PIPR_MONITOR_CFGS pParams, DWORD dwLen);
	int WINAPI SsmIPRRmvProtocol(int nBId,int nPtlId);
	int WINAPI SsmIPRGetStationCount(int nBId);
	int WINAPI SsmIPRGetStationList(int nBId, int nStationNum, PSTATION_LIST pStationList);
	int WINAPI SsmIPRDupAllList(int nBId,PIPR_ALL_INFO pIPRALLInfo);
	int WINAPI SsmIPRFreeAllList(PIPR_ALL_INFO pIPRALLInfo);
	int WINAPI SsmIPRGetStationInfo(int nBId, int nStationId, int* nPtlId, int* nTransType, int* nPort, LPSTR szIP, LPSTR szMAC);
	int WINAPI SsmIPRSendSession(int nChId, LPSTR szPriSlaverAddr, int nPriSlaverPort, LPSTR szSecSlaverAddr, int nSecSlaverPort);
	int WINAPI SsmIPRStopSendSession(int nChId);
	int WINAPI SsmIPRGetSessionInfo(int nChId, pIPR_SessionInfo pIPR_SessionInfo);
	int WINAPI SsmIPRGetSessionID(int nChId);
	int WINAPI SsmIPRGetPTWithSessionID(int nSession,int* pPT,int* sPT);
	int WINAPI SsmIPRSetMonitorType(int nBId, int nMType);
	int WINAPI SsmIPRGetMonitorType(int nBId);
	int WINAPI SsmIPRAddStationToMap(int nBId,int nStationId, LPSTR szAddr, int nPort);
	int WINAPI SsmIPRRmvStationFromMap(int nBId, LPSTR szAddr, int nPort);
	int WINAPI SsmIPRRmvStationFromMapEx(int nBId, int nStationId,BOOL bDelAtOnce);
	int WINAPI SsmIPRChkFoward(int nChId);
	int WINAPI SsmIPRGetProtocol(int nPtlId,PIPR_MONITOR_CFGS pParams,DWORD* pdwLen);
	//IPRecorder Recorder Master API:
	int WINAPI SsmIPRSetRecVolume(int nChId, int nPrimaryVlm, int nSecondaryVlm);
	int WINAPI SsmIPRSetInBandDTMFChkFlag(int nChId, BOOL bEnable);
	int WINAPI SsmIPRGetInBandDTMFChkFlag(int nChId);
	int WINAPI SsmIPRSetMixerType(int nChId, int nFlag);
	int WINAPI SsmIPRGetMixerType(int nChId);
	int WINAPI SsmIPRActiveSession(int nCh, int nRecSlaverId, DWORD dwSessionId, 
								LPSTR szPriAddr, int nPriPort, int *pnPriRcvPort, int nPriCodec,
								LPSTR szSecAddr, int nSecPort, int *pnSecRcvPort, int nSecCodec);
	int WINAPI SsmIPRDeActiveSession(int nCh);
	int WINAPI SsmIPRActiveAndRecToFile(int nCh, int nSlaverId, int dwSessionId,
								int nCodec, int* pnPriRcvPort, int* pnSecRcvPort,
								LPCSTR pszFileName, int nFormat, DWORD dwStartPos, DWORD dwBytes, 
								DWORD dwTime, int nMask);
	int WINAPI SsmIPRDeActiveAndStopRecToFile(int nCh);
	int WINAPI SsmIPRGetRecSlaverCount(int nBId);
	int WINAPI SsmIPRGetRecSlaverList(int nBId, int nRecSlaverNum, int* nReturnRecSlaverNum, PIPR_SLAVERADDR pIPR_SlaverAddr);
	int WINAPI SsmIPRGetRecSlaverInfo(int nBId, int nRecSlaverId, BOOL* bStarted, int* nTotalResources, int* nUsedResources, int *nThreadPairs, PCOMPUTER_INFO pcomputerinfo);
	int WINAPI SsmIPRCloseRecSlaver(int nBId, int nRecSlaverId);
	DWORD WINAPI SsmGetUSBKeySerial(int nBId);
	BOOL WINAPI SsmIsBoardIPR(int nBID);
	int WINAPI SsmIPRConnectToSlaver(char* szSvrAddr,int nSvrPort);
	int WINAPI SsmIPRGetStationInfoEx(int nBId,int nStationId, PStationInfoEx pSInfoEx);
	int WINAPI SsmIPRAddStationToMapEx(int nBId,int nStationId,LPSTR szAddr,int nPort,LPSTR szName,LPVOID lpReserve);
	int WINAPI SsmIPRGetCallInfo(int nBId,int nCallRef,pIPR_SIP_CALL_INFOEX pCallInfo);
	int WINAPI SsmIPRGetMessageField(IN int nBId,IN int nCallRef,IN LPSTR pStrFieldName,OUT LPSTR pStrContentBuf,IN OUT int* pSize);
	int WINAPI SsmIPRExternalReleaseCall(int nCallRef);
	int WINAPI SsmIPRAddSessionToMap(int nBId, int nStationId, LPSTR szAddrPrimary, int nPortPrimary, LPSTR szAddrSecondary, int nPortSecondary);
	int WINAPI SsmSetNotchfilter(int ch, BOOL bNotchfilter, DWORD wFilterHz);

	int WINAPI SsmGetMaxFlashFilterTime(int ch);
	int WINAPI SsmSetMaxFlashFilterTime(int ch, WORD wTime);
#else
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@ Gateway Client API @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	int WINAPI ShgSendSs7Msu(WORD wMsuLength, LPBYTE pucMsuBuf);
	int WINAPI ShgGetSs7Msu(LPBYTE* ppucMsuBuf);
	int WINAPI ShgGetMtp3State();
	int WINAPI ShgGetMtp3StateEx(int nDpcNo);
	int WINAPI ShgGetMtp2Status(int nLinkNum);
	int WINAPI ShgGetMaxPcm();
	int WINAPI ShgGetPcmLinkStatus(int nPcmNo, PWORD pwPcmLinkStatus);
	int WINAPI ShgSetPcmLinkStatus(int nPcmNo, WORD wPcmLinkStatus);
	int WINAPI ShgPcmTsToCh(int nLocalPcmNo, int nTs);
	int WINAPI ShgChToPcmTs(int ch, int* pnLocalPcmNo, int* pnTs);
	int WINAPI ShgStart(LPSTR lpSsmCfgFileName);
	int WINAPI ShgClose();
	void WINAPI ShgGetLastErrMsg(LPSTR szErrMsgBuf);
	char *WINAPI ShgGetLastErrMsgA(void);
	int WINAPI ShgGetLastErrCode();
	int WINAPI ShgGetMaxCh(void);
	int WINAPI ShgGetCallerId(int ch, LPSTR szCallerId);
	char* WINAPI ShgGetCallerIdA(int ch);
	int WINAPI ShgClearCallerId(int ch);
	int WINAPI ShgPickup(int ch);
	int WINAPI ShgHangup(int ch);
	int WINAPI ShgSearchIdleCallOutCh(WORD wSearchMode, DWORD dwPrecedence);
	int WINAPI ShgAutoDial(int ch, LPSTR szPhoNum);
	int WINAPI ShgAppendPhoNum(int ch, LPSTR szPhoNum);
	int WINAPI ShgChkAutoDial(int ch);
	int WINAPI ShgGetAutoDialFailureReason(int ch);
	int WINAPI ShgGetBlockReason(int ch);
	int WINAPI ShgQueryLocalChBlockState(int ch, PDWORD pdwBlockState);
	int WINAPI ShgBlockLocalCh(int ch);
	int WINAPI ShgUnblockLocalCh(int ch);
	int WINAPI ShgQueryLocalPCMBlockState(int nLocalPcmNo, PDWORD pdwBlockState);
	int WINAPI ShgBlockLocalPCM(int nLocalPcmNo);
	int WINAPI ShgUnblockLocalPCM(int nLocalPcmNo);
	int WINAPI ShgBlockRemoteCh(int ch);
	int WINAPI ShgUnblockRemoteCh(int ch);
	int WINAPI ShgGetRemoteChBlockStatus(int ch);
	int WINAPI ShgBlockRemotePCM(int nLocalPcmNo, DWORD dwBlockMode);
	int WINAPI ShgUnblockRemotePCM(int nLocalPcmNo, DWORD dwUnblockMode);
	int WINAPI ShgGetRemotePCMBlockStatus(int nLocalPcmNo, DWORD dwBlockMode);
	int WINAPI ShgGetChState(int ch);
	LONG WINAPI ShgGetChStateKeepTime(int ch);
	int WINAPI ShgGetPendingReason(int ch);
	int WINAPI ShgGetPhoNumLen(int ch);
	int WINAPI ShgGetPhoNumStr(int ch, LPSTR pszPhoNum);
	char* WINAPI ShgGetPhoNumStrA(int ch);
	int WINAPI ShgGet1stPhoNumLen(int ch);
	int WINAPI ShgGetChType(int ch);
	int WINAPI ShgGet1stPhoNumStr(int ch, LPSTR pszPhoNum);
	char *WINAPI ShgGet1stPhoNumStrA(int ch);
	int WINAPI ShgEnableAutoSendKB(int ch, BOOL bEnable);
	int WINAPI ShgGetAutoSendKBFlag(int ch);
	int WINAPI ShgSetKB(int ch, BYTE btSigKB);
	int WINAPI ShgSetTxCallerId(int ch, LPSTR pszTxCallerId);
	int WINAPI ShgSetTxOriginalCalleeId(int ch, LPSTR pszTxCallerId);
	int WINAPI ShgGetTxCallerId(int ch, LPSTR pszTxCallerId);
	int WINAPI ShgGetKB(int ch);
	int WINAPI ShgIsHaveCpg(int ch);
	int WINAPI ShgGetCpg(int ch, char* szmsg, int* msglen);
	WORD WINAPI ShgGetReleaseReason(int ch);
	int WINAPI ShgGetIsupUPPara(int nBCh, WORD wEventType, LPWORD pwLength, PUCHAR pucContent);
#endif

#ifdef __cplusplus
}
#endif
